libpurple/tests/test_trie.c

Wed, 02 Apr 2014 21:33:14 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Wed, 02 Apr 2014 21:33:14 +0200
changeset 35729
27c5683767c8
parent 35665
f1310093e434
child 35733
60a5d065ca81
permissions
-rw-r--r--

MemoryPool: fix invalid read, Trie: test tweaks

35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1 #include <string.h>
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
2
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
3 #include "tests.h"
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
4 #include "../trie.h"
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
5
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
6 static gboolean
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
7 test_trie_replace_cb(GString *out, const gchar *word, gpointer word_data,
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
8 gpointer user_data)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
9 {
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
10 /* the "test" word for the test_trie_replace test */
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
11 if ((int)word_data == 0x1001)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
12 return FALSE;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
13
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
14 g_string_append_printf(out, "[%d:%x]", (int)user_data, (int)word_data);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
15
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
16 return TRUE;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
17 }
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
18
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
19 START_TEST(test_trie_replace)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
20 {
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
21 PurpleTrie *trie;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
22 const gchar *in;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
23 gchar *out;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
24
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
25 trie = purple_trie_new();
35729
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
26 purple_trie_set_reset_on_match(trie, FALSE);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
27
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
28 purple_trie_add(trie, "test", (gpointer)0x1001);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
29 purple_trie_add(trie, "testing", (gpointer)0x1002);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
30 purple_trie_add(trie, "overtested", (gpointer)0x1003);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
31 purple_trie_add(trie, "trie", (gpointer)0x1004);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
32 purple_trie_add(trie, "tree", (gpointer)0x1005);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
33 purple_trie_add(trie, "implement", (gpointer)0x1006);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
34 purple_trie_add(trie, "implementation", (gpointer)0x1007);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
35
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
36 in = "Alice is testing her trie implementation, "
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
37 "but she's far away from making test tree overtested";
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
38
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
39 out = purple_trie_replace(trie, in, test_trie_replace_cb, (gpointer)1);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
40
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
41 assert_string_equal("Alice is [1:1002] her [1:1004] [1:1006]ation,"
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
42 " but she's far away from making test [1:1005] [1:1003]", out);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
43
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
44 g_object_unref(trie);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
45 g_free(out);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
46 }
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
47 END_TEST
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
48
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
49 START_TEST(test_trie_replace_whole)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
50 {
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
51 PurpleTrie *trie;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
52 const gchar *in;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
53 gchar *out;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
54
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
55 trie = purple_trie_new();
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
56
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
57 purple_trie_add(trie, "test", (gpointer)0x2002);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
58
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
59 in = "test";
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
60
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
61 out = purple_trie_replace(trie, in, test_trie_replace_cb, (gpointer)2);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
62
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
63 assert_string_equal("[2:2002]", out);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
64
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
65 g_object_unref(trie);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
66 g_free(out);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
67 }
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
68 END_TEST
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
69
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
70 START_TEST(test_trie_replace_inner)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
71 {
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
72 PurpleTrie *trie;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
73 const gchar *in;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
74 gchar *out;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
75
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
76 trie = purple_trie_new();
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
77
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
78 purple_trie_add(trie, "est", (gpointer)0x3001);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
79 purple_trie_add(trie, "tester", (gpointer)0x3002);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
80
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
81 in = "the test!";
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
82
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
83 out = purple_trie_replace(trie, in, test_trie_replace_cb, (gpointer)3);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
84
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
85 assert_string_equal("the t[3:3001]!", out);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
86
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
87 g_object_unref(trie);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
88 g_free(out);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
89 }
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
90 END_TEST
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
91
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
92 START_TEST(test_trie_replace_empty)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
93 {
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
94 PurpleTrie *trie;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
95 const gchar *in;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
96 gchar *out;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
97
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
98 trie = purple_trie_new();
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
99
35664
4a2cf3314f4b The empty word case was a bad idea
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35663
diff changeset
100 purple_trie_add(trie, "test", (gpointer)0x4001);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
101
35664
4a2cf3314f4b The empty word case was a bad idea
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35663
diff changeset
102 in = "";
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
103
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
104 out = purple_trie_replace(trie, in, test_trie_replace_cb, (gpointer)4);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
105
35664
4a2cf3314f4b The empty word case was a bad idea
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35663
diff changeset
106 assert_string_equal("", out);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
107
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
108 g_object_unref(trie);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
109 g_free(out);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
110 }
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
111 END_TEST
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
112
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
113 START_TEST(test_trie_multi_replace)
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
114 {
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
115 PurpleTrie *trie1, *trie2, *trie3;
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
116 GSList *tries = NULL;
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
117 const gchar *in;
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
118 gchar *out;
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
119
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
120 trie1 = purple_trie_new();
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
121 trie2 = purple_trie_new();
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
122 trie3 = purple_trie_new();
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
123
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
124 /* appending is not efficient, but we have only 3 elements */
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
125 tries = g_slist_append(tries, trie1);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
126 tries = g_slist_append(tries, trie2);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
127 tries = g_slist_append(tries, trie3);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
128
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
129 purple_trie_add(trie1, "test", (gpointer)0x5011);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
130 purple_trie_add(trie1, "trie1", (gpointer)0x5012);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
131 purple_trie_add(trie1, "Alice", (gpointer)0x5013);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
132
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
133 purple_trie_add(trie2, "test", (gpointer)0x5021);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
134 purple_trie_add(trie2, "trie2", (gpointer)0x5022);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
135 purple_trie_add(trie2, "example", (gpointer)0x5023);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
136 purple_trie_add(trie2, "Ali", (gpointer)0x5024);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
137
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
138 /* "tester" without last (accepting) letter of "test" */
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
139 purple_trie_add(trie3, "teser", (gpointer)0x5031);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
140 purple_trie_add(trie3, "trie3", (gpointer)0x5032);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
141 purple_trie_add(trie3, "tester", (gpointer)0x5033);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
142 purple_trie_add(trie3, "example", (gpointer)0x5034);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
143 purple_trie_add(trie3, "Al", (gpointer)0x5035);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
144
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
145 in = "test tester trie trie1 trie2 trie3 example Alice";
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
146
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
147 out = purple_trie_multi_replace(tries, in,
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
148 test_trie_replace_cb, (gpointer)5);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
149
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
150 assert_string_equal("[5:5011] [5:5011]er trie [5:5012] [5:5022] "
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
151 "[5:5032] [5:5023] [5:5035]ice", out);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
152
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
153 g_slist_free_full(tries, g_object_unref);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
154 g_free(out);
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
155 }
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
156 END_TEST
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
157
35729
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
158 START_TEST(test_trie_remove)
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
159 {
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
160 PurpleTrie *trie;
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
161 const gchar *in;
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
162 gchar *out;
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
163
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
164 trie = purple_trie_new();
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
165
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
166 purple_trie_add(trie, "alice", (gpointer)0x6001);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
167 purple_trie_add(trie, "bob", (gpointer)0x6002);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
168 purple_trie_add(trie, "cherry", (gpointer)0x6003);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
169
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
170 purple_trie_remove(trie, "bob");
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
171
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
172 in = "alice bob cherry";
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
173
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
174 out = purple_trie_replace(trie, in, test_trie_replace_cb, (gpointer)6);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
175
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
176 assert_string_equal("[6:6001] bob [6:6003]", out);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
177
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
178 g_object_unref(trie);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
179 g_free(out);
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
180 }
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
181 END_TEST
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
182
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
183 Suite *
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
184 purple_trie_suite(void)
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
185 {
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
186 Suite *s = suite_create("PurpleTrie class");
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
187
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
188 TCase *tc = tcase_create("trie");
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
189 tcase_add_test(tc, test_trie_replace);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
190 tcase_add_test(tc, test_trie_replace_whole);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
191 tcase_add_test(tc, test_trie_replace_inner);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
192 tcase_add_test(tc, test_trie_replace_empty);
35665
f1310093e434 Implement and test multi-trie
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35664
diff changeset
193 tcase_add_test(tc, test_trie_multi_replace);
35729
27c5683767c8 MemoryPool: fix invalid read, Trie: test tweaks
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35665
diff changeset
194 tcase_add_test(tc, test_trie_remove);
35663
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
195
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
196 suite_add_tcase(s, tc);
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
197
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
198 return s;
6527214c491e Add testsuite for PurpleTrie and fix found bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
199 }

mercurial