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