diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-10-28 00:18:10 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2009-11-03 20:25:01 +0800 |
commit | d3d64970aca1fa3cf19632843b27b2a88b0e8acd (patch) | |
tree | 3937c4c15a851867968fa7d9a85e6071f746a4ec /tests/empathy-irc-network-test.c | |
parent | 85268449651286df02e6da607abd98828fd68a6a (diff) | |
download | gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.tar gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.tar.gz gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.tar.bz2 gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.tar.lz gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.tar.xz gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.tar.zst gsoc2013-empathy-d3d64970aca1fa3cf19632843b27b2a88b0e8acd.zip |
port check-empathy-irc-network.c to GTest
Diffstat (limited to 'tests/empathy-irc-network-test.c')
-rw-r--r-- | tests/empathy-irc-network-test.c | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/tests/empathy-irc-network-test.c b/tests/empathy-irc-network-test.c new file mode 100644 index 000000000..00fbe91b1 --- /dev/null +++ b/tests/empathy-irc-network-test.c @@ -0,0 +1,247 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include "check-irc-helper.h" +#include "test-helper.h" + +#include <libempathy/empathy-irc-network.h> + +static void +test_empathy_irc_network_new (void) +{ + EmpathyIrcNetwork *network; + + network = empathy_irc_network_new ("Network1"); + check_network (network, "Network1", "UTF-8", NULL, 0); + + g_object_unref (network); +} + +static void +test_property_change (void) +{ + EmpathyIrcNetwork *network; + + network = empathy_irc_network_new ("Network1"); + check_network (network, "Network1", "UTF-8", NULL, 0); + + g_object_set (network, + "name", "Network2", + "charset", "ISO-8859-1", + NULL); + + check_network (network, "Network2", "ISO-8859-1", NULL, 0); + + g_object_unref (network); + +} + +static gboolean modified; + +static void +modified_cb (EmpathyIrcNetwork *network, + gpointer unused) +{ + modified = TRUE; +} + +static void +test_modified_signal (void) +{ + EmpathyIrcNetwork *network; + + network = empathy_irc_network_new ("Network1"); + check_network (network, "Network1", "UTF-8", NULL, 0); + + modified = FALSE; + g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL); + + g_object_set (network, "name", "Network2", NULL); + g_assert (modified); + modified = FALSE; + g_object_set (network, "name", "Network2", NULL); + g_assert (!modified); + + g_object_unref (network); +} + +static void +add_servers (EmpathyIrcNetwork *network, + struct server_t *servers, + guint nb_servers) +{ + guint i; + + for (i = 0; i < nb_servers; i ++) + { + EmpathyIrcServer *server; + + server = empathy_irc_server_new (servers[i].address, + servers[i].port, servers[i].ssl); + modified = FALSE; + empathy_irc_network_append_server (network, server); + g_assert (modified); + g_object_unref (server); + } +} + +static void +test_add_server (void) +{ + EmpathyIrcNetwork *network; + EmpathyIrcServer *server; + GSList *servers, *l; + struct server_t test_servers[] = { + { "server1", 6667, FALSE }, + { "server2", 6668, TRUE }, + { "server3", 6667, FALSE }, + { "server4", 6669, TRUE }}; + struct server_t servers_without_3[] = { + { "server1", 6667, FALSE }, + { "server2", 6668, TRUE }, + { "server4", 6669, TRUE }}; + + network = empathy_irc_network_new ("Network1"); + check_network (network, "Network1", "UTF-8", NULL, 0); + + modified = FALSE; + g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL); + + check_network (network, "Network1", "UTF-8", NULL, 0); + + /* add the servers */ + add_servers (network, test_servers, 4); + + check_network (network, "Network1", "UTF-8", test_servers, 4); + + /* Now let's remove the 3rd server */ + servers = empathy_irc_network_get_servers (network); + l = g_slist_nth (servers, 2); + g_assert (l != NULL); + server = l->data; + modified = FALSE; + empathy_irc_network_remove_server (network, server); + g_assert (modified); + + /* free the list */ + g_slist_foreach (servers, (GFunc) g_object_unref, NULL); + g_slist_free (servers); + + /* The 3rd server should have disappear */ + check_network (network, "Network1", "UTF-8", servers_without_3, 3); + + g_object_unref (network); +} + +static void +test_modified_signal_because_of_server (void) +{ + EmpathyIrcNetwork *network; + EmpathyIrcServer *server; + + network = empathy_irc_network_new ("Network1"); + check_network (network, "Network1", "UTF-8", NULL, 0); + + g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL); + + server = empathy_irc_server_new ("server1", 6667, FALSE); + empathy_irc_network_append_server (network, server); + + /* Change server properties */ + modified = FALSE; + g_object_set (server, "address", "server2", NULL); + g_assert (modified); + modified = FALSE; + g_object_set (server, "port", 6668, NULL); + g_assert (modified); + modified = FALSE; + g_object_set (server, "ssl", TRUE, NULL); + g_assert (modified); + + empathy_irc_network_remove_server (network, server); + modified = FALSE; + g_object_set (server, "address", "server3", NULL); + /* We removed the server so the network is not modified anymore */ + g_assert (!modified); + + g_object_unref (network); +} + +static void +test_empathy_irc_network_set_server_position (void) +{ + EmpathyIrcNetwork *network; + GSList *servers, *l; + struct server_t test_servers[] = { + { "server1", 6667, FALSE }, + { "server2", 6668, TRUE }, + { "server3", 6667, FALSE }, + { "server4", 6669, TRUE }}; + struct server_t test_servers_sorted[] = { + { "server2", 6668, TRUE }, + { "server4", 6669, TRUE }, + { "server3", 6667, FALSE }, + { "server1", 6667, FALSE }}; + + network = empathy_irc_network_new ("Network1"); + check_network (network, "Network1", "UTF-8", NULL, 0); + + modified = FALSE; + g_signal_connect (network, "modified", G_CALLBACK (modified_cb), NULL); + + /* add the servers */ + add_servers (network, test_servers, 4); + check_network (network, "Network1", "UTF-8", test_servers, 4); + + /* get servers list */ + servers = empathy_irc_network_get_servers (network); + g_assert (g_slist_length (servers) == 4); + modified = FALSE; + + /* server1 go to the last position */ + empathy_irc_network_set_server_position (network, servers->data, -1); + + /* server2 go to the first position */ + l = servers->next; + empathy_irc_network_set_server_position (network, l->data, 0); + + /* server3 go to the third position */ + l = l->next; + empathy_irc_network_set_server_position (network, l->data, 2); + + /* server4 go to the second position*/ + l = l->next; + empathy_irc_network_set_server_position (network, l->data, 1); + + g_assert (modified); + + /* free the list */ + g_slist_foreach (servers, (GFunc) g_object_unref, NULL); + g_slist_free (servers); + + /* Check if servers are sorted */ + check_network (network, "Network1", "UTF-8", test_servers_sorted, 4); +} + +int +main (int argc, + char **argv) +{ + int result; + + test_init (argc, argv); + + g_test_add_func ("/irc-network/new", test_empathy_irc_network_new); + g_test_add_func ("/irc-network/property-change", test_property_change); + g_test_add_func ("/irc-network/modified-signal", test_modified_signal); + g_test_add_func ("/irc-network/add-server", test_add_server); + g_test_add_func ("/irc-network/modified-signal-because-of-server", + test_modified_signal_because_of_server); + g_test_add_func ("/irc-network/set-server-position", + test_empathy_irc_network_set_server_position); + + result = g_test_run (); + test_deinit (); + return result; +} |