Adding missing debian changelog. Modyfying hildon-banner to allow creation with null...
[hildon] / tests / check-hildon-weekday-picker.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 <check.h>
25 #include <gtk/gtkmain.h>
26 #include "test_suites.h"
27 #include "check_utils.h"
28
29 #include "hildon-weekday-picker.h"
30 #include "hildon-window.h"
31 #include "hildon-caption.h"
32
33 /* -------------------- Fixtures -------------------- */
34
35 static HildonWeekdayPicker *weekday_picker = NULL;
36 static GtkWidget *showed_window = NULL;
37
38 static void 
39 fx_setup_default_weekday_picker ()
40 {
41   int argc = 0;
42
43   gtk_init(&argc, NULL);
44
45   showed_window =  create_test_window ();
46  
47   weekday_picker = HILDON_WEEKDAY_PICKER(hildon_weekday_picker_new());
48   /* Check weekday_picker object has been created properly */
49   fail_if(!HILDON_IS_WEEKDAY_PICKER(weekday_picker), 
50           "hildon-weekday-picker: Creation failed.");
51
52   /* This packs the widget into the window (a gtk container). */
53   gtk_container_add (GTK_CONTAINER (showed_window), GTK_WIDGET (weekday_picker)); 
54
55   /* Displays the widget and the window */
56   show_all_test_window (showed_window);
57
58
59 }
60
61 static void 
62 fx_teardown_default_weekday_picker ()
63 {
64   gtk_widget_destroy (GTK_WIDGET (showed_window));
65 }
66
67 /* -------------------- Test cases -------------------- */
68
69 /* ----- Test case for set_day / isset_day -----*/
70
71 /**
72  * Purpose: Check that regular day values are set and get properly
73  * Cases considered:
74  *    - Set and isset the day "WEDNESDAY" on weekday picker.
75  *    - Set and isset two days (WEDNESDAY and SATURDAY) on weekday picker and check that only the two selected days are set.
76  */
77 START_TEST (test_set_day_regular)
78 {
79         
80   /* Test 1: Set WEDNESDAY on weekday picker. */
81   hildon_weekday_picker_set_day(weekday_picker,G_DATE_WEDNESDAY);
82     
83   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),  "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY didn't set WEDNESDAY.");
84   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set MONDAY wrong.");
85   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),     "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set TUESDAY wrong.");
86   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),    "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set THURSDAY wrong.");
87   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set FRIDAY wrong.");
88   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),    "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set SATURDAY wrong.");
89   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set SUNDAY wrong.");
90   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY), "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY set G_DATE_BAD_WEEKDAY wrong.");
91
92   hildon_weekday_picker_set_day(weekday_picker,G_DATE_WEDNESDAY);
93   hildon_weekday_picker_set_day(weekday_picker,G_DATE_SATURDAY);
94     
95   /* Test 1: Set WEDNESDAY and SATURDAY on weekday picker. */
96   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),     "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY didn't set WEDNESDAY.");
97   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY didn't set SATURDAY.");
98   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY set TUESDAY wrong.");
99   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY set THURSDAY wrong.");
100   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY set MONDAY wrong.");
101   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY set FRIDAY wrong.");
102   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY set SUNDAY wrong.");
103   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY),    "hildon-weekday-picker: set_day/isset_day to G_DATE_WEDNESDAY and G_DATE_SATURDAY set G_DATE_BAD_WEEKDAY wrong.");
104     
105 }
106 END_TEST
107
108 /**
109  * Purpose: Check that limit day values are set and get properly
110  * Cases considered:
111  *    - Set and isset the day "MONDAY".
112  *    - Set and isset the day "SUNDAY".
113  *    - Set SUNDAY and MONDAY on weekday picker and check that the two selected days are set, but the others doesn't be set.
114  *    - Set all days on weekday picker and check that all days are set.
115  */
116 START_TEST (test_set_day_limits)
117 {
118     
119   hildon_weekday_picker_unset_all(weekday_picker);
120     
121   /* Test 1: Set MONDAY on weekday picker. */
122   hildon_weekday_picker_set_day(weekday_picker,G_DATE_MONDAY);
123     
124   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY didn't set MONDAY.");
125   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set SUNDAY wrong.");
126   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set TUESDAY wrong.");
127   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set WEDNESDAY wrong.");
128   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set THURSDAY wrong.");
129   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set FRIDAY wrong.");
130   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set SATURDAY wrong.");
131   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY),    "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set G_DATE_BAD_WEEKDAY wrong.");
132
133   hildon_weekday_picker_unset_all(weekday_picker);
134     
135   /* Test 2: Set SUNDAY on weekday picker. */
136   hildon_weekday_picker_set_day(weekday_picker,G_DATE_SUNDAY);
137     
138   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_SUNDAY didn't set SUNDAY.");
139   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set MONDAY wrong.");
140   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set TUESDAY wrong.");
141   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set WEDNESDAY wrong.");
142   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set THURSDAY wrong.");
143   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set FRIDAY wrong.");
144   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set SATURDAY wrong.");
145   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY),    "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY set G_DATE_BAD_WEEKDAY wrong.");
146
147   hildon_weekday_picker_unset_all(weekday_picker);
148
149   hildon_weekday_picker_set_day(weekday_picker,G_DATE_SUNDAY);
150   hildon_weekday_picker_set_day(weekday_picker,G_DATE_MONDAY);
151     
152   /* Test 3: Set MONDAY and SUNDAY on weekday picker. */
153   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY didn't set MONDAY.");
154   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY didn't set SUNDAY.");
155   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY set TUESDAY wrong.");
156   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY set WEDNESDAY wrong.");
157   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY set THURSDAY wrong.");
158   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY set FRIDAY wrong.");
159   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_MONDAY and G_DATE_SUNDAY set SATURDAY wrong.");    
160
161   hildon_weekday_picker_unset_all(weekday_picker);
162
163   /* Test 4: Set all days on weekday picker. */
164   hildon_weekday_picker_set_day(weekday_picker,G_DATE_MONDAY);
165   hildon_weekday_picker_set_day(weekday_picker,G_DATE_TUESDAY);
166   hildon_weekday_picker_set_day(weekday_picker,G_DATE_WEDNESDAY);
167   hildon_weekday_picker_set_day(weekday_picker,G_DATE_THURSDAY);
168   hildon_weekday_picker_set_day(weekday_picker,G_DATE_FRIDAY);
169   hildon_weekday_picker_set_day(weekday_picker,G_DATE_SATURDAY);
170   hildon_weekday_picker_set_day(weekday_picker,G_DATE_SUNDAY);
171     
172   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),        "hildon-weekday-picker: set_day/isset_day all days did not set MONDAY.");
173  fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day/isset_day all days did not set SUNDAY.");
174   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),       "hildon-weekday-picker: set_day/isset_day all days did not set TUESDAY.");
175   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),     "hildon-weekday-picker: set_day/isset_day all days did not set WEDNESDAY.");
176   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),      "hildon-weekday-picker: set_day/isset_day all days did not set THURSDAY.");
177   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),        "hildon-weekday-picker: set_day/isset_day all days did not set FRIDAY.");
178   fail_if(!hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),      "hildon-weekday-picker: set_day/isset_day all days did not set SATURDAY.");    
179
180 }
181 END_TEST
182
183 /**
184  * Purpose: Check that invalid day values are set and get properly
185  * Cases considered:
186  *    - Set MONDAY on NULL weekday picker.
187  *    - Set G_DATE_BAD_WEEKDAY on weekday picker.
188  *    - Set 8 on weekday picker.
189  *    - Set -2 on weekday picker.
190  *    - isset_day from NULL weekday picker
191  */
192 START_TEST (test_set_day_invalid)
193 {
194     
195   hildon_weekday_picker_unset_all(weekday_picker);
196     
197   /* Test 1: Set MONDAY on NULL weekday picker. */
198   hildon_weekday_picker_set_day(NULL,G_DATE_MONDAY);
199   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),         "hildon-weekday-picker: set_day on NULL object set MONDAY wrong");
200   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day on NULL object set SUNDAY wrong.");
201   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day on NULL object set WEDNESDAY wrong.");
202
203   /* Test 2: Set G_DATE_BAD_WEEKDAY on weekday picker. */
204
205   hildon_weekday_picker_set_day(weekday_picker,G_DATE_BAD_WEEKDAY);
206     
207   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY),    "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set G_DATE_BAD_WEEKDAY wrong.");
208   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set MONDAY wrong.");
209   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set TUESDAY wrong.");
210   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set WEDNESDAY wrong.");
211   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set THURSDAY wrong.");
212   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set FRIDAY wrong.");
213   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),       "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set SATURDAY wrong.");
214   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day/isset_day to G_DATE_BAD_WEEKDAY set SUNDAY wrong.");
215     
216   /* Test 3: Set 8 on weekday picker. */
217   hildon_weekday_picker_set_day(weekday_picker,8);
218     
219   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY),    "hildon-weekday-picker: set_day/isset_day to 8 set G_DATE_BAD_WEEKDAY wrong.");
220   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),         "hildon-weekday-picker: set_day/isset_day to 8 set MONDAY wrong.");
221   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to 8 set TUESDAY wrong.");
222   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day/isset_day to 8 set WEDNESDAY wrong.");
223   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to 8 set THURSDAY wrong.");
224   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to 8 set FRIDAY wrong.");
225   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),       "hildon-weekday-picker: set_day/isset_day to 8 set SATURDAY wrong.");
226   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day/isset_day to 8 set SUNDAY wrong.");
227
228   /* Test 4: Set -2 on weekday picker. */
229   hildon_weekday_picker_set_day(weekday_picker,-2);
230     
231   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_BAD_WEEKDAY),    "hildon-weekday-picker: set_day/isset_day to -2 set G_DATE_BAD_WEEKDAY wrong.");
232   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_MONDAY),         "hildon-weekday-picker: set_day/isset_day to -2 set MONDAY wrong.");
233   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_TUESDAY),        "hildon-weekday-picker: set_day/isset_day to -2 set TUESDAY wrong.");
234   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_WEDNESDAY),      "hildon-weekday-picker: set_day/isset_day to -2 set WEDNESDAY wrong.");
235   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_THURSDAY),       "hildon-weekday-picker: set_day/isset_day to -2 set THURSDAY wrong.");
236   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_FRIDAY),         "hildon-weekday-picker: set_day/isset_day to -2 set FRIDAY wrong.");
237   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SATURDAY),       "hildon-weekday-picker: set_day/isset_day to -2 set SATURDAY wrong.");
238   fail_if(hildon_weekday_picker_isset_day(weekday_picker,G_DATE_SUNDAY),         "hildon-weekday-picker: set_day/isset_day to -2 set SUNDAY wrong.");
239
240   /* Test 4: isset_day from NULL weekday picker. */
241   hildon_weekday_picker_isset_day(NULL,G_DATE_BAD_WEEKDAY);
242 }
243 END_TEST
244
245 /* ---------- Suite creation ---------- */
246
247 Suite *create_hildon_weekday_picker_suite()
248 {
249   /* Create the suite */
250   Suite *s = suite_create("HildonWeekdayPicker");
251
252   /* Create test cases */
253   TCase *tc1 = tcase_create("set_day");
254     
255   /* Create test case for hildon_weekday_picker_set_day and hildon_weekday_picker_isset_day and add it to the suite */
256   tcase_add_checked_fixture(tc1, fx_setup_default_weekday_picker, fx_teardown_default_weekday_picker);
257   tcase_add_test(tc1, test_set_day_regular);
258   tcase_add_test(tc1, test_set_day_limits);
259   tcase_add_test(tc1, test_set_day_invalid);
260   suite_add_tcase (s, tc1);
261   
262   /* Return created suite */
263   return s;             
264 }