libpurple/tests/test_keyvaluepair.c

Sat, 01 Oct 2022 01:50:52 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 01 Oct 2022 01:50:52 -0500
changeset 41771
c5877e2c93f2
parent 40351
79cbdc5c5989
child 42866
4b201e18638f
permissions
-rw-r--r--

Create and add PurpleContacts to the manager when purple_buddy_new is called

This required some additional changes to PurpleContact. Namely that the contact always has a presence and it is no longer writeable.

Testing Done:
Ran the unit tests and verified nothing funky happens when running.

We can't test that all of the properties are properly bound because we would have to start up a lot more of libpurple than I'm willing to do for something that's temporary.

Bugs closed: PIDGIN-17685

Reviewed at https://reviews.imfreedom.org/r/1873/

40351
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * purple
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 *
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * source distribution.
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 *
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * (at your option) any later version.
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 *
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * GNU General Public License for more details.
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 *
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 */
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 #include <glib.h>
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include <purple.h>
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 /******************************************************************************
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 * Tests
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 *****************************************************************************/
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 static void
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 test_key_value_pair_new(void) {
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 PurpleKeyValuePair *kvp = NULL;
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 kvp = purple_key_value_pair_new("abc", "123");
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 g_assert_nonnull(kvp);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 g_assert_cmpstr(kvp->key, ==, "abc");
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 g_assert_cmpstr(kvp->value, ==, "123");
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 g_assert_null(kvp->value_destroy_func);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 purple_key_value_pair_free(kvp);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 }
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 static void
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 test_key_value_pair_new_full(void) {
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 PurpleKeyValuePair *kvp = NULL;
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 kvp = purple_key_value_pair_new_full("abc", g_strdup("123"), g_free);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 g_assert_nonnull(kvp);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 g_assert_cmpstr(kvp->key, ==, "abc");
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 g_assert_cmpstr(kvp->value, ==, "123");
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 g_assert_true(kvp->value_destroy_func == g_free);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 purple_key_value_pair_free(kvp);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 }
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 static void
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 test_key_value_pair_copy(void) {
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 PurpleKeyValuePair *kvp1 = NULL, *kvp2 = NULL;
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 kvp1 = purple_key_value_pair_new("abc", "123");
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 g_assert_nonnull(kvp1);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 kvp2 = purple_key_value_pair_copy(kvp1);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 g_assert_nonnull(kvp2);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 g_assert_cmpstr(kvp1->key, ==, kvp2->key);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 g_assert_cmpstr(kvp1->value, ==, kvp2->value);;
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 g_assert_true(kvp1->value_destroy_func == kvp2->value_destroy_func);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 purple_key_value_pair_free(kvp1);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 purple_key_value_pair_free(kvp2);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 }
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 static void
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 test_key_value_pair_copy_allocated_subprocess(void) {
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 PurpleKeyValuePair *kvp1 = NULL, *kvp2 = NULL;
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 kvp1 = purple_key_value_pair_new_full("abc", g_strdup("123"), g_free);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 g_assert_nonnull(kvp1);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 kvp2 = purple_key_value_pair_copy(kvp1);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 g_assert_null(kvp2);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 purple_key_value_pair_free(kvp1);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 }
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 static void
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 test_key_value_pair_copy_allocated(void) {
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 g_test_trap_subprocess("/key-value-pair/copy-allocated/subprocess", 0, 0);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 g_test_trap_assert_failed();
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 }
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 /******************************************************************************
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 * Main
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 *****************************************************************************/
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 gint
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 main(gint argc, gchar **argv) {
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 g_test_init(&argc, &argv, NULL);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 g_test_set_nonfatal_assertions();
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 g_test_add_func("/key-value-pair/new",
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 test_key_value_pair_new);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 g_test_add_func("/key-value-pair/new-full",
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 test_key_value_pair_new_full);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 g_test_add_func("/key-value-pair/copy",
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 test_key_value_pair_copy);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 g_test_add_func("/key-value-pair/copy-allocated",
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 test_key_value_pair_copy_allocated);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 g_test_add_func("/key-value-pair/copy-allocated/subprocess",
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 test_key_value_pair_copy_allocated_subprocess);
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 return g_test_run();
79cbdc5c5989 Add some unit tests for key value pairs
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 }

mercurial