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