Sat, 09 Aug 2025 17:37:27 +0800
Fix the birb header path
The birb header referred would only work with birb provided by wrap casuing
build to fail because of system-installed birb dependency. The commit points
it to the correct path <birb.h>.
See: https://keep.imfreedom.org/birb/birb/file/5bf00c7d7f80/birb/meson.build#l77
|
43053
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Purple - Internet Messaging Library |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * This library is free software; you can redistribute it and/or |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * modify it under the terms of the GNU Lesser General Public |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * License as published by the Free Software Foundation; either |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * version 2 of the License, or (at your option) any later version. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * This library is distributed in the hope that it will be useful, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * Lesser General Public License for more details. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU Lesser General Public |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * License along with this library; if not, see <https://www.gnu.org/licenses/>. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | #include <glib.h> |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | |
|
43265
7960b5f85729
Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents:
43053
diff
changeset
|
21 | #include <birb.h> |
|
43053
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
43265
7960b5f85729
Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents:
43053
diff
changeset
|
23 | #include <purple.h> |
|
43053
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
25 | /****************************************************************************** |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | * Tests |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | *****************************************************************************/ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | test_purple_command_manager_new(void) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | PurpleCommandManager *manager = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
31 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | manager = purple_command_manager_new(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
33 | g_assert_true(PURPLE_IS_COMMAND_MANAGER(manager)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | g_assert_finalize_object(manager); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | test_purple_command_manager_add_remove(void) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | PurpleCommand *command = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
41 | PurpleCommandManager *manager = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | GListModel *model = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | gboolean ret = FALSE; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | guint counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
46 | manager = purple_command_manager_new(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
47 | model = G_LIST_MODEL(manager); |
|
43265
7960b5f85729
Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents:
43053
diff
changeset
|
48 | birb_count_list_model_items_changed(G_LIST_MODEL(manager), &counter); |
|
43053
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
49 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
50 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
51 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
52 | command = purple_command_new("test-command", "test", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
53 | /* We use command again in the next test. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
54 | g_object_ref(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
55 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
56 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
57 | g_assert_cmpuint(counter, ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
58 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
59 | /* Duplicate adds should be ignore. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
61 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
62 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
63 | g_assert_cmpuint(counter, ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
64 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
65 | /* Duplicate command but as a new pointer and make sure it doesn't get |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
66 | * added. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
67 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
68 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | command = purple_command_new("test-command", "test", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
70 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
72 | g_assert_cmpuint(counter, ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
73 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
74 | /* Name and command must match. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
75 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
76 | ret = purple_command_manager_remove(manager, "unknown-command", "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
77 | g_assert_false(ret); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
78 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
79 | g_assert_cmpuint(counter, ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
80 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
81 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
82 | ret = purple_command_manager_remove(manager, "test-command", "unknown"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
83 | g_assert_false(ret); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
84 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
85 | g_assert_cmpuint(counter, ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
86 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
87 | /* Do the real remove. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
88 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
89 | ret = purple_command_manager_remove(manager, "test-command", "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
90 | g_assert_true(ret); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
91 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
92 | g_assert_cmpuint(counter, ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
93 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
94 | /* Duplicate removes should return false as the item is gone. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
95 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
96 | ret = purple_command_manager_remove(manager, "test-command", "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
97 | g_assert_false(ret); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
98 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
99 | g_assert_cmpuint(counter, ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
100 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
101 | g_assert_finalize_object(manager); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
102 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
103 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
104 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
105 | test_purple_command_manager_remove_all_with_source(void) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
106 | PurpleCommand *command = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
107 | PurpleCommandManager *manager = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
108 | GListModel *model = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
109 | guint counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
110 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
111 | manager = purple_command_manager_new(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
112 | model = G_LIST_MODEL(manager); |
|
43265
7960b5f85729
Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents:
43053
diff
changeset
|
113 | birb_count_list_model_items_changed(G_LIST_MODEL(manager), &counter); |
|
43053
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
114 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
115 | /* Make sure remove all works on an empty manager. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
116 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
117 | purple_command_manager_remove_all_with_source(manager, "test-1"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
118 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
119 | g_assert_cmpuint(counter, ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
120 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
121 | /* Add 3 commands, two with the same source and another with a different |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
122 | * source in between them. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
123 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
124 | command = purple_command_new("privmsg", "test-1", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
125 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
126 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
127 | command = purple_command_new("xyzzy", "test-2", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
128 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
129 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
130 | command = purple_command_new("query", "test-1", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
131 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
132 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
133 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 3); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
134 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
135 | /* Remove the commands with test-1 as a source and verify that the second |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
136 | * command still exists. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
137 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
138 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
139 | purple_command_manager_remove_all_with_source(manager, "test-1"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
140 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
141 | g_assert_cmpuint(counter, ==, 2); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
142 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
143 | command = purple_command_manager_find(manager, NULL, "xyzzy"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
144 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
145 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
146 | /* Add another command with a source of test-2. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
147 | command = purple_command_new("quit", "test-2", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
148 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
149 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
150 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 2); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
151 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
152 | /* Now remove all commands with a source of test-2. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
153 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
154 | purple_command_manager_remove_all_with_source(manager, "test-2"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
155 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
156 | g_assert_cmpuint(counter, ==, 2); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
157 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
158 | g_assert_finalize_object(manager); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
159 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
160 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
161 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
162 | test_purple_command_manager_find(void) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
163 | PurpleCommand *command = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
164 | PurpleCommandManager *manager = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
165 | PurpleConversation *conversation = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
166 | PurpleTags *tags = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
167 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
168 | manager = purple_command_manager_new(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
169 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
170 | /* We need at least one conversation to test filtering, so we just create |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
171 | * one with a tag of test=true. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
172 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
173 | conversation = g_object_new(PURPLE_TYPE_CONVERSATION, NULL); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
174 | tags = purple_conversation_get_tags(conversation); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
175 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
176 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
177 | /* Test that find works with nothing added. This is unlikely to happen in |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
178 | * practice, but it's good to test for. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
179 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
180 | command = purple_command_manager_find(manager, NULL, "unknown"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
181 | g_assert_null(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
182 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
183 | command = purple_command_manager_find(manager, conversation, "unknown"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
184 | g_assert_null(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
185 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
186 | /* Now add a test command and verify that we can find it. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
187 | command = purple_command_new("test", "test-1", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
188 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
189 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
190 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
191 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
192 | command = purple_command_manager_find(manager, NULL, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
193 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
194 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
195 | command = purple_command_manager_find(manager, conversation, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
196 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
197 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
198 | /* Now add the command again but with a lower priority. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
199 | command = purple_command_new("test", "test-2", -100); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
200 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
201 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
202 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
203 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
204 | command = purple_command_manager_find(manager, NULL, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
205 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
206 | g_assert_cmpuint(purple_command_get_priority(command), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
207 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
208 | command = purple_command_manager_find(manager, conversation, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
209 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
210 | g_assert_cmpuint(purple_command_get_priority(command), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
211 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
212 | /* Now add the command again but with a higher priority. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
213 | command = purple_command_new("test", "test-3", 100); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
214 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
215 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
216 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
217 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
218 | command = purple_command_manager_find(manager, NULL, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
219 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
220 | g_assert_cmpuint(purple_command_get_priority(command), ==, 100); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
221 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
222 | command = purple_command_manager_find(manager, conversation, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
223 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
224 | g_assert_cmpuint(purple_command_get_priority(command), ==, 100); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
225 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
226 | /* Finally add the command again, but with a much higher priority and tags |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
227 | * that won't match the conversation. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
228 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
229 | command = purple_command_new("test", "test-4", 1337); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
230 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
231 | purple_tags_add(tags, "test=false"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
232 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
233 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
234 | command = purple_command_manager_find(manager, NULL, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
235 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
236 | g_assert_cmpuint(purple_command_get_priority(command), ==, 1337); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
237 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
238 | command = purple_command_manager_find(manager, conversation, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
239 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
240 | g_assert_cmpuint(purple_command_get_priority(command), ==, 100); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
241 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
242 | /* Cleanup. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
243 | g_assert_finalize_object(conversation); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
244 | g_assert_finalize_object(manager); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
245 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
246 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
247 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
248 | test_purple_command_manager_find_all(void) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
249 | PurpleCommand *command = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
250 | PurpleCommandManager *manager = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
251 | PurpleConversation *conversation = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
252 | PurpleTags *tags = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
253 | GListModel *commands = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
254 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
255 | manager = purple_command_manager_new(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
256 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
257 | /* We need at least one conversation to test filtering, so we just create |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
258 | * one with a tag of test=true. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
259 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
260 | conversation = g_object_new(PURPLE_TYPE_CONVERSATION, NULL); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
261 | tags = purple_conversation_get_tags(conversation); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
262 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
263 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
264 | /* Create and add our commands that all share a name. One with no tags, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
265 | * another with the same tags as the conversation, one without the |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
266 | * conversation tags, and another with a different priority but the |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
267 | * conversation tags. |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
268 | */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
269 | command = purple_command_new("test", "test-1", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
270 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
271 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
272 | command = purple_command_new("test", "test-2", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
273 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
274 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
275 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
276 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
277 | command = purple_command_new("test", "test-3", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
278 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
279 | purple_tags_add(tags, "test=false"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
280 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
281 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
282 | command = purple_command_new("test", "test-4", 100); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
283 | tags = purple_command_get_tags(command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
284 | purple_tags_add(tags, "test=true"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
285 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
286 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
287 | /* Check an unknown command. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
288 | commands = purple_command_manager_find_all(manager, NULL, "unknown"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
289 | g_assert_cmpuint(g_list_model_get_n_items(commands), ==, 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
290 | g_clear_object(&commands); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
291 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
292 | /* Check without the conversation. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
293 | commands = purple_command_manager_find_all(manager, NULL, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
294 | g_assert_cmpuint(g_list_model_get_n_items(commands), ==, 4); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
295 | g_clear_object(&commands); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
296 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
297 | /* Check with the conversation. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
298 | commands = purple_command_manager_find_all(manager, conversation, "test"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
299 | g_assert_cmpuint(g_list_model_get_n_items(commands), ==, 3); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
300 | g_clear_object(&commands); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
301 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
302 | g_assert_finalize_object(conversation); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
303 | g_assert_finalize_object(manager); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
304 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
305 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
306 | /****************************************************************************** |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
307 | * Find and Execute tests |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
308 | *****************************************************************************/ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
309 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
310 | test_purple_command_manager_find_and_execute_counter(PurpleCommand *command, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
311 | PurpleConversation *conversation, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
312 | G_GNUC_UNUSED GStrv params, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
313 | gpointer data) |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
314 | { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
315 | guint *counter = data; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
316 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
317 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
318 | g_assert_true(PURPLE_IS_CONVERSATION(conversation)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
319 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
320 | *counter = *counter + 1; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
321 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
322 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
323 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
324 | test_purple_command_manager_find_and_execute_executed(PurpleCommand *command, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
325 | PurpleConversation *conversation, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
326 | GStrv params, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
327 | gpointer data) |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
328 | { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
329 | g_assert_true(PURPLE_IS_COMMAND(command)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
330 | g_assert_true(PURPLE_IS_CONVERSATION(conversation)); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
331 | g_assert_cmpstrv(params, data); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
332 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
333 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
334 | static void |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
335 | test_purple_command_manager_find_and_execute(void) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
336 | PurpleCommand *command = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
337 | PurpleCommandManager *manager = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
338 | PurpleConversation *conversation = NULL; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
339 | gboolean result = FALSE; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
340 | guint counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
341 | const char * const expected_args[] = {"arg1", "arg2", NULL}; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
342 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
343 | manager = purple_command_manager_new(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
344 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
345 | conversation = g_object_new(PURPLE_TYPE_CONVERSATION, NULL); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
346 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
347 | /* Make sure we can't find anything in an empty manager. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
348 | result = purple_command_manager_find_and_execute(manager, conversation, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
349 | "unknown"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
350 | g_assert_false(result); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
351 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
352 | /* Again but with some arguments this time. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
353 | result = purple_command_manager_find_and_execute(manager, conversation, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
354 | "unknown arg1 arg2"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
355 | g_assert_false(result); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
356 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
357 | /* Create and add the command. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
358 | command = purple_command_new("test", "test-1", 0); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
359 | g_signal_connect(command, "executed", |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
360 | G_CALLBACK(test_purple_command_manager_find_and_execute_counter), |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
361 | &counter); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
362 | g_signal_connect(command, "executed", |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
363 | G_CALLBACK(test_purple_command_manager_find_and_execute_executed), |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
364 | (gpointer)expected_args); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
365 | purple_command_manager_add(manager, command); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
366 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
367 | /* Try to execute it. */ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
368 | counter = 0; |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
369 | result = purple_command_manager_find_and_execute(manager, conversation, |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
370 | "test arg1 arg2"); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
371 | g_assert_true(result); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
372 | g_assert_cmpuint(counter, ==, 1); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
373 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
374 | g_assert_finalize_object(conversation); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
375 | g_assert_finalize_object(manager); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
376 | } |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
377 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
378 | /****************************************************************************** |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
379 | * Main |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
380 | *****************************************************************************/ |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
381 | int |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
382 | main(int argc, char *argv[]) { |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
383 | g_test_init(&argc, &argv, NULL); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
384 | g_test_set_nonfatal_assertions(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
385 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
386 | g_test_add_func("/command-manager/new", test_purple_command_manager_new); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
387 | g_test_add_func("/command-manager/add-remove", |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
388 | test_purple_command_manager_add_remove); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
389 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
390 | g_test_add_func("/command-manager/remove-all-with-source", |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
391 | test_purple_command_manager_remove_all_with_source); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
392 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
393 | g_test_add_func("/command-manager/find", test_purple_command_manager_find); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
394 | g_test_add_func("/command-manager/find-all", |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
395 | test_purple_command_manager_find_all); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
396 | g_test_add_func("/command-manager/find-and-execute", |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
397 | test_purple_command_manager_find_and_execute); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
398 | |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
399 | return g_test_run(); |
|
f2f944ac775c
Implement Purple.CommandManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
400 | } |