]> git.0d.be Git - empathy.git/blob - tests/empathy-irc-network-test.c
Updated Spanish translation
[empathy.git] / tests / empathy-irc-network-test.c
1 #include "config.h"
2
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <tp-account-widgets/tpaw-irc-network.h>
7
8 #include "test-helper.h"
9 #include "test-irc-helper.h"
10
11 static void
12 test_tpaw_irc_network_new (void)
13 {
14   TpawIrcNetwork *network;
15
16   network = tpaw_irc_network_new ("Network1");
17   check_network (network, "Network1", "UTF-8", NULL, 0);
18
19   g_object_unref (network);
20 }
21
22 static void
23 test_property_change (void)
24 {
25   TpawIrcNetwork *network;
26
27   network = tpaw_irc_network_new ("Network1");
28   check_network (network, "Network1", "UTF-8", NULL, 0);
29
30   g_object_set (network,
31       "name", "Network2",
32       "charset", "ISO-8859-1",
33       NULL);
34
35   check_network (network, "Network2", "ISO-8859-1", NULL, 0);
36
37   g_object_unref (network);
38
39 }
40
41 static gboolean modified;
42
43 static void
44 modified_cb (TpawIrcNetwork *network,
45              gpointer unused)
46 {
47   modified = TRUE;
48 }
49
50 static void
51 test_modified_signal (void)
52 {
53   TpawIrcNetwork *network;
54
55   network = tpaw_irc_network_new ("Network1");
56   check_network (network, "Network1", "UTF-8", NULL, 0);
57
58   modified = FALSE;
59   g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
60
61   g_object_set (network, "name", "Network2", NULL);
62   g_assert (modified);
63   modified = FALSE;
64   g_object_set (network, "name", "Network2", NULL);
65   g_assert (!modified);
66
67   g_object_unref (network);
68 }
69
70 static void
71 add_servers (TpawIrcNetwork *network,
72              struct server_t *servers,
73              guint nb_servers)
74 {
75   guint i;
76
77   for (i = 0; i < nb_servers; i ++)
78     {
79       TpawIrcServer *server;
80
81       server = tpaw_irc_server_new (servers[i].address,
82           servers[i].port, servers[i].ssl);
83       modified = FALSE;
84       tpaw_irc_network_append_server (network, server);
85       g_assert (modified);
86       g_object_unref (server);
87     }
88 }
89
90 static void
91 test_add_server (void)
92 {
93   TpawIrcNetwork *network;
94   TpawIrcServer *server;
95   GSList *servers, *l;
96   struct server_t test_servers[] = {
97     { "server1", 6667, FALSE },
98     { "server2", 6668, TRUE },
99     { "server3", 6667, FALSE },
100     { "server4", 6669, TRUE }};
101   struct server_t servers_without_3[] = {
102     { "server1", 6667, FALSE },
103     { "server2", 6668, TRUE },
104     { "server4", 6669, TRUE }};
105
106   network = tpaw_irc_network_new ("Network1");
107   check_network (network, "Network1", "UTF-8", NULL, 0);
108
109   modified = FALSE;
110   g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
111
112   check_network (network, "Network1", "UTF-8", NULL, 0);
113
114   /* add the servers */
115   add_servers (network, test_servers, 4);
116
117   check_network (network, "Network1", "UTF-8", test_servers, 4);
118
119   /* Now let's remove the 3rd server */
120   servers = tpaw_irc_network_get_servers (network);
121   l = g_slist_nth (servers, 2);
122   g_assert (l != NULL);
123   server = l->data;
124   modified = FALSE;
125   tpaw_irc_network_remove_server (network, server);
126   g_assert (modified);
127
128   /* free the list */
129   g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
130   g_slist_free (servers);
131
132   /* The 3rd server should have disappear */
133   check_network (network, "Network1", "UTF-8", servers_without_3, 3);
134
135   g_object_unref (network);
136 }
137
138 static void
139 test_modified_signal_because_of_server (void)
140 {
141   TpawIrcNetwork *network;
142   TpawIrcServer *server;
143
144   network = tpaw_irc_network_new ("Network1");
145   check_network (network, "Network1", "UTF-8", NULL, 0);
146
147   g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
148
149   server = tpaw_irc_server_new ("server1", 6667, FALSE);
150   tpaw_irc_network_append_server (network, server);
151
152   /* Change server properties */
153   modified = FALSE;
154   g_object_set (server, "address", "server2", NULL);
155   g_assert (modified);
156   modified = FALSE;
157   g_object_set (server, "port", 6668, NULL);
158   g_assert (modified);
159   modified = FALSE;
160   g_object_set (server, "ssl", TRUE, NULL);
161   g_assert (modified);
162
163   tpaw_irc_network_remove_server (network, server);
164   modified = FALSE;
165   g_object_set (server, "address", "server3", NULL);
166   /* We removed the server so the network is not modified anymore */
167   g_assert (!modified);
168
169   g_object_unref (network);
170 }
171
172 static void
173 test_tpaw_irc_network_set_server_position (void)
174 {
175   TpawIrcNetwork *network;
176   GSList *servers, *l;
177   struct server_t test_servers[] = {
178     { "server1", 6667, FALSE },
179     { "server2", 6668, TRUE },
180     { "server3", 6667, FALSE },
181     { "server4", 6669, TRUE }};
182   struct server_t test_servers_sorted[] = {
183     { "server2", 6668, TRUE },
184     { "server4", 6669, TRUE },
185     { "server3", 6667, FALSE },
186     { "server1", 6667, FALSE }};
187
188   network = tpaw_irc_network_new ("Network1");
189   check_network (network, "Network1", "UTF-8", NULL, 0);
190
191   modified = FALSE;
192   g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL);
193
194   /* add the servers */
195   add_servers (network, test_servers, 4);
196   check_network (network, "Network1", "UTF-8", test_servers, 4);
197
198   /* get servers list */
199   servers = tpaw_irc_network_get_servers (network);
200   g_assert (g_slist_length (servers) == 4);
201   modified = FALSE;
202
203   /* server1 go to the last position */
204   tpaw_irc_network_set_server_position (network, servers->data, -1);
205
206   /* server2 go to the first position */
207   l = servers->next;
208   tpaw_irc_network_set_server_position (network, l->data, 0);
209
210   /* server3 go to the third position */
211   l = l->next;
212   tpaw_irc_network_set_server_position (network, l->data, 2);
213
214   /* server4 go to the second position*/
215   l = l->next;
216   tpaw_irc_network_set_server_position (network, l->data, 1);
217
218   g_assert (modified);
219
220   /* free the list */
221   g_slist_foreach (servers, (GFunc) g_object_unref, NULL);
222   g_slist_free (servers);
223
224   /* Check if servers are sorted */
225   check_network (network, "Network1", "UTF-8", test_servers_sorted, 4);
226 }
227
228 int
229 main (int argc,
230     char **argv)
231 {
232   int result;
233
234   test_init (argc, argv);
235
236   g_test_add_func ("/irc-network/new", test_tpaw_irc_network_new);
237   g_test_add_func ("/irc-network/property-change", test_property_change);
238   g_test_add_func ("/irc-network/modified-signal", test_modified_signal);
239   g_test_add_func ("/irc-network/add-server", test_add_server);
240   g_test_add_func ("/irc-network/modified-signal-because-of-server",
241       test_modified_signal_because_of_server);
242   g_test_add_func ("/irc-network/set-server-position",
243       test_tpaw_irc_network_set_server_position);
244
245   result = g_test_run ();
246   test_deinit ();
247   return result;
248 }