Make sure that all timeouts in HildonBanner are removed
[hildon] / tests / check-hildon-name-password-dialog.c
1 /*
2  * This file is a part of hildon tests
3  *
4  * Copyright (C) 2006, 2007 Nokia Corporation, all rights reserved.
5  *
6  * Contact: Michael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation; version 2.1 of
11  * the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this library; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22  *
23  */
24 #include <stdlib.h>
25 #include <string.h>
26 #include <check.h>
27 #include <gtk/gtkmain.h>
28 #include "test_suites.h"
29 #include "check_utils.h"
30 #include <hildon/hildon-name-password-dialog.h>
31 #include <hildon/hildon-window.h>
32
33 /* -------------------- Fixtures -------------------- */
34
35 static HildonNamePasswordDialog *name_password_dialog = NULL;
36 static GtkWindow * npd_window = NULL; 
37
38 static void 
39 fx_setup_default_name_password_dialog ()
40 {
41   int argc = 0;
42     
43   gtk_init(&argc, NULL);
44     
45   npd_window = GTK_WINDOW(create_test_window());   
46
47   /* Check window object has been created properly */
48   fail_if(!HILDON_IS_WINDOW(npd_window),
49           "hildon-name-password-dialog: Window creation failed.");
50
51   name_password_dialog = HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new(npd_window));
52   /* Check that the name password dialog object has been created properly */
53   fail_if (!HILDON_IS_NAME_PASSWORD_DIALOG (name_password_dialog),
54            "hildon-name-password-dialog: Creation failed.");
55   
56   show_test_window(GTK_WIDGET(npd_window));
57
58   show_test_window(GTK_WIDGET(name_password_dialog));
59
60 }
61
62 static void 
63 fx_teardown_default_name_password_dialog ()
64 {
65   gtk_widget_destroy (GTK_WIDGET(name_password_dialog));
66
67   gtk_widget_destroy (GTK_WIDGET(npd_window));
68 }
69
70 /* -------------------- Test cases -------------------- */
71
72 /* ----- Test case for new_with_default -----*/
73
74 /**
75  * Purpose: Check that regular name and password values are correctly added by default on creation.
76  * Cases considered: 
77  *    - Create new name and password dialog with "test_name" and "test_password" by default.
78  *    - Create new name and password dialog with "0123456789" and "123412341234" by default.
79  *    - Create new name and password dialog with TEST_STRING and TEST_STRING by default.
80  *    - Create new name and password dialog with "" and "" by default.
81  */
82 START_TEST (test_new_with_default_regular)
83 {
84   const gchar * default_name="test_name";
85   const gchar * default_password="test_password";
86   const gchar * ret_name;
87   const gchar * ret_password;
88   HildonNamePasswordDialog * default_name_password_dialog=NULL;
89
90   /* Check that the name password dialog object has been created properly */
91   fail_if (!HILDON_IS_NAME_PASSWORD_DIALOG (name_password_dialog),
92            "hildon-name-password-dialog: Creation failed.");
93   fail_if (!GTK_IS_WINDOW (npd_window),
94            "hildon-name-password-dialog: Window creation failed.");
95
96   /* Test 1: Create new dialog with username and password by default */
97   default_name_password_dialog = 
98     HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new_with_default(npd_window, default_name, default_password));       
99   fail_if(!HILDON_IS_NAME_PASSWORD_DIALOG(default_name_password_dialog),
100           "hildon-name-password-dialog: Creation failed with hildon_name_password_dialog_new_with_default");
101
102   ret_name = hildon_name_password_dialog_get_name(default_name_password_dialog);
103   fail_if (strcmp (default_name,ret_name) != 0,
104            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)",default_name,ret_name);
105
106   ret_password = hildon_name_password_dialog_get_password(default_name_password_dialog);
107   fail_if (strcmp (default_password,ret_password) != 0,
108            "hildon-name-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);
109
110   gtk_widget_destroy (GTK_WIDGET(default_name_password_dialog));
111   default_name_password_dialog=NULL;
112
113   /* Test 2: Create new dialog with username and password by default */
114   default_name = "0123456789";
115   default_password = "123412341234";
116
117   default_name_password_dialog = 
118     HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new_with_default(npd_window, default_name, default_password));       
119   fail_if(!HILDON_IS_NAME_PASSWORD_DIALOG(default_name_password_dialog),
120           "hildon-name-password-dialog: Creation failed with hildon_name_password_dialog_new_with_default");
121
122   ret_name = hildon_name_password_dialog_get_name(default_name_password_dialog);
123   fail_if (strcmp (default_name,ret_name) != 0,
124            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)", default_name, ret_name);
125
126   ret_password = hildon_name_password_dialog_get_password(default_name_password_dialog);
127   fail_if (strcmp (default_password,ret_password) != 0,
128            "hildon-name-password-dialog: Default password and returned password are diferent (%s,%s)", default_password, ret_password);
129
130   gtk_widget_destroy (GTK_WIDGET(default_name_password_dialog));
131
132   /* Test 3: Create new dialog with invalid username and password by default. */
133   default_name = TEST_STRING;
134   default_password = TEST_STRING;
135
136   default_name_password_dialog = 
137     HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new_with_default(npd_window,default_name,default_password));
138
139   fail_if(!HILDON_IS_NAME_PASSWORD_DIALOG(default_name_password_dialog),
140           "hildon-name-password-dialog: Creation failed with hildon_name_password_dialog_new_with_default");
141
142   ret_name = hildon_name_password_dialog_get_name(default_name_password_dialog);
143   fail_if (strcmp (default_name,ret_name) != 0,
144            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)",default_name,ret_name);
145
146   ret_password = hildon_name_password_dialog_get_password(default_name_password_dialog);       
147   fail_if (strcmp (default_password,ret_password) != 0,
148            "hildon-name-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);
149
150   gtk_widget_destroy (GTK_WIDGET(default_name_password_dialog)); 
151
152   /* Test 4: Create new dialog with empty username and password by default. */
153   default_name = "";
154   default_password = "";
155
156   default_name_password_dialog = 
157     HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new_with_default(npd_window,default_name,default_password));
158
159   fail_if(!HILDON_IS_NAME_PASSWORD_DIALOG(default_name_password_dialog),
160           "hildon-name-password-dialog: Creation failed with hildon_name_password_dialog_new_with_default");
161
162   ret_name = hildon_name_password_dialog_get_name(default_name_password_dialog);
163   fail_if (strcmp (default_name,ret_name) != 0,
164            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)",default_name,ret_name);
165
166   ret_password = hildon_name_password_dialog_get_password(default_name_password_dialog);  
167   fail_if (strcmp (default_password,ret_password) != 0,
168            "hildon-name-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);
169
170
171   gtk_widget_destroy (GTK_WIDGET(default_name_password_dialog)); 
172 }
173 END_TEST
174
175
176 /**
177  * Purpose: Check that regular name and password values are correctly added by default on creation.
178  * Cases considered: 
179  *    - Create a name and password dialog with NULL name.
180  *    - Create a name and password dialog with NULL password.
181  */
182 START_TEST (test_new_with_default_invalid)
183 {
184   const gchar * default_name="test_name";
185   const gchar * default_password="test_password";
186   const gchar * ret_name;
187   const gchar * ret_password;
188   HildonNamePasswordDialog * default_name_password_dialog;
189
190   /* Check that the name password dialog object has been created properly */
191   fail_if (!HILDON_IS_NAME_PASSWORD_DIALOG (name_password_dialog),
192            "hildon-name-password-dialog: Creation failed.");
193   fail_if (!GTK_IS_WINDOW (npd_window),
194            "hildon-name-password-dialog: Window creation failed.");
195     
196   /* Test 1: Create a name and password dialog with NULL name. */
197   default_name_password_dialog = 
198     HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new_with_default(npd_window,NULL,default_password));
199    
200   fail_if(!HILDON_IS_NAME_PASSWORD_DIALOG(default_name_password_dialog),
201           "hildon-name-password-dialog: Creation failed with hildon_name_password_dialog_new_with_default");
202
203   ret_name = hildon_name_password_dialog_get_name(default_name_password_dialog);
204   fail_if (strcmp ("",ret_name) != 0,
205            "hildon-name-password-dialog: Default name and returned name are diferent (,%s)",ret_name);
206
207   ret_password = hildon_name_password_dialog_get_password(default_name_password_dialog);
208   fail_if (strcmp (default_password,ret_password) != 0,
209            "hildon-name-password-dialog: Default password and returned password are diferent (%s,%s)",default_password,ret_password);
210
211   gtk_widget_destroy (GTK_WIDGET(default_name_password_dialog)); 
212
213   /* Test 2: Create a name and password dialog with NULL name. */
214   default_name_password_dialog = 
215     HILDON_NAME_PASSWORD_DIALOG(hildon_name_password_dialog_new_with_default(npd_window,default_name,NULL));
216
217   fail_if(!HILDON_IS_NAME_PASSWORD_DIALOG(default_name_password_dialog),
218           "hildon-name-password-dialog: Creation failed with hildon_name_password_dialog_new_with_default");
219
220   ret_name = hildon_name_password_dialog_get_name(default_name_password_dialog);
221   fail_if (strcmp (default_name,ret_name) != 0,
222            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)",default_name,ret_name);
223
224   ret_password = hildon_name_password_dialog_get_password(default_name_password_dialog);   
225   fail_if (strcmp ("",ret_password) != 0,
226            "hildon-name-password-dialog: Default password and returned password are diferent (,%s)",ret_password);
227         
228   gtk_widget_destroy (GTK_WIDGET(default_name_password_dialog)); 
229
230 }
231 END_TEST
232
233 /* ----- Test case for get_name -----*/
234
235 /**
236  * Purpose: Check that regular name and password values are correctly added by default on creation.
237  * Cases considered: 
238  *    - Get name "test_name" set by g_object_set_property.
239  *    - Get name "0123456789" set by g_object_set_property.
240  *    - Get name TEST_STRING set by g_object_set_property.
241  */
242 START_TEST (test_get_name_regular)
243 {
244   const gchar * default_name="test_name";  
245   const gchar * ret_name;
246   GValue value={0, };
247
248   /* Check that the name password dialog object has been created properly */
249   fail_if (!HILDON_IS_NAME_PASSWORD_DIALOG (name_password_dialog),
250            "hildon-name-password-dialog: Creation failed.");
251   fail_if (!GTK_IS_WINDOW (npd_window),
252            "hildon-name-password-dialog: Window creation failed.");
253
254   g_value_init (&value, G_TYPE_STRING);
255   g_value_set_string(&value, default_name);
256   g_object_set_property(G_OBJECT(name_password_dialog), "name", &value);
257   g_value_unset (&value);
258     
259   /* Test 1: Get name "test_name" set by g_object_set_property. */
260   ret_name = hildon_name_password_dialog_get_name(name_password_dialog);
261     
262   fail_if (strcmp(default_name, ret_name) != 0,
263            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)", default_name, ret_name);
264                 
265   /* Test 2: Get name "0123456789" set by g_object_set_property. */
266   default_name = "0123456789";
267
268   g_value_init (&value, G_TYPE_STRING);
269   g_value_set_string(&value,default_name);
270   g_object_set_property(G_OBJECT(name_password_dialog), "name", &value);
271   g_value_unset (&value);
272
273   ret_name = hildon_name_password_dialog_get_name(name_password_dialog);
274   fail_if (strcmp (default_name,ret_name) != 0,
275            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)", default_name, ret_name);
276
277   /* Test 3: Get name TEST_STRING set by g_object_set_property. */
278   default_name=TEST_STRING;
279
280   g_value_init (&value, G_TYPE_STRING);
281   g_value_set_string(&value,default_name);
282   g_object_set_property(G_OBJECT (name_password_dialog),"name",&value);
283   g_value_unset (&value);
284
285   ret_name = hildon_name_password_dialog_get_name(name_password_dialog);
286   fail_if (strcmp (default_name,ret_name) != 0,
287            "hildon-name-password-dialog: Default name and returned name are diferent (%s,%s)",default_name,ret_name);
288 }
289 END_TEST
290
291
292 /**
293  * Purpose: Check that regular name and password values are correctly added by default on creation.
294  * Cases considered: 
295  *    - Get name on NULL object.
296  *    - Get empty password set by g_object_set_property with NULL value.
297  */
298
299 START_TEST (test_get_name_invalid)
300 {
301   const gchar * default_name;
302   const gchar * ret_name;
303   GValue value={0, };
304
305   /* Check that the name password dialog object has been created properly */
306   fail_if (!HILDON_IS_NAME_PASSWORD_DIALOG (name_password_dialog),
307            "hildon-name-password-dialog: Creation failed.");
308   fail_if (!GTK_IS_WINDOW (npd_window),
309            "hildon-name-password-dialog: Window creation failed.");
310
311   /* Test 1: Get name on NULL object. */
312   ret_name = hildon_name_password_dialog_get_name(NULL);
313
314
315   /* Test 2: Get name NULL set by g_object_set_property. */
316   default_name = NULL;
317   g_value_init (&value, G_TYPE_STRING);
318   g_value_set_string(&value,default_name);
319   g_object_set_property(G_OBJECT (name_password_dialog),"name",&value);
320   g_value_unset (&value);
321
322   ret_name = hildon_name_password_dialog_get_name(name_password_dialog);
323     
324   fail_if (strcmp ("",ret_name) != 0,
325            "hildon-name-password-dialog: Default name and returned name are diferent (,%s)",ret_name);          
326 }
327 END_TEST
328
329
330 /* ---------- Suite creation ---------- */
331
332 Suite *create_hildon_name_password_dialog_suite()
333 {
334   /* Create the suite */
335   Suite *s = suite_create("HildonNamePasswordDialog");
336
337   /* Create test cases */
338   TCase *tc1 = tcase_create("new_with_default");
339   TCase *tc2 = tcase_create("get_name");
340
341   /* Create unit tests for hildon_name_password_dialog_new_with_default and add it to the suite */
342   tcase_add_checked_fixture(tc1, fx_setup_default_name_password_dialog, fx_teardown_default_name_password_dialog);
343   tcase_add_test(tc1, test_new_with_default_regular);
344   tcase_add_test(tc1, test_new_with_default_invalid);
345   suite_add_tcase (s, tc1);
346
347   /* Create unit tests for hildon_name_password_dialog_get_name and add it to the suite */
348   tcase_add_checked_fixture(tc2, fx_setup_default_name_password_dialog, fx_teardown_default_name_password_dialog);
349   tcase_add_test(tc2, test_get_name_regular);
350   tcase_add_test(tc2, test_get_name_invalid);
351   suite_add_tcase (s, tc2);
352
353   /* Return created suite */
354   return s;             
355 }