2 * This file is a part of hildon tests
4 * Copyright (C) 2006, 2007 Nokia Corporation, all rights reserved.
6 * Contact: Michael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
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.
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.
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
27 #include <gtk/gtkmain.h>
28 #include <glib/gprintf.h>
29 #include "test_suites.h"
30 #include "check_utils.h"
32 #include "hildon-number-editor.h"
34 /* -------------------- Fixtures -------------------- */
36 static HildonNumberEditor *number_editor = NULL;
37 static GtkWidget *showed_window = NULL;
40 fx_setup_default_number_editor ()
43 gtk_init(&argc, NULL);
45 number_editor = HILDON_NUMBER_EDITOR(hildon_number_editor_new(0, 100));
46 /* Check number_editor object has been created properly */
47 fail_if(!HILDON_IS_NUMBER_EDITOR(number_editor),
48 "hildon-number-editor: Creation failed.");
50 showed_window = create_test_window ();
52 /* This packs the widget into the window (a gtk container). */
53 gtk_container_add (GTK_CONTAINER (showed_window), GTK_WIDGET (number_editor));
55 /* Displays the widget and the window */
56 show_all_test_window (showed_window);
60 fx_teardown_default_number_editor ()
62 gtk_widget_destroy (GTK_WIDGET (number_editor));
65 /* -------------------- Test cases -------------------- */
67 /* ----- Test case for set_range -----*/
70 * Purpose: Check that the ranges can be set safely
72 * - Set a number limit of (0, 100)
73 * - Set a number limit of (1, 100)
74 * - Set a number limit of (-100, 100)
75 * - Set a number limit of (-100, 0)
76 * - Set a number limit of (-100, -1)
78 START_TEST (test_set_range_regular)
82 /* Test 1: Set limits to (0, 100) */
83 hildon_number_editor_set_range(number_editor, 0, 100);
85 hildon_number_editor_set_value(number_editor, 0);
87 hildon_number_editor_set_value(number_editor, 101);
88 number = hildon_number_editor_get_value(number_editor);
90 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 and then we set the value 101 but we get %d instead of 0",
93 /* Test 2: Set limits to (1, 100) */
94 hildon_number_editor_set_range(number_editor, 1, 100);
96 hildon_number_editor_set_value(number_editor, 1);
98 hildon_number_editor_set_value(number_editor, 0);
99 number = hildon_number_editor_get_value(number_editor);
100 fail_if (number != 1,
101 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 and then we set the value -1 but we get %d instead of 0",
104 /* Test 3: Set limits to (-100, 100) */
105 hildon_number_editor_set_range(number_editor, -100, 100);
107 hildon_number_editor_set_value(number_editor, 0);
109 hildon_number_editor_set_value(number_editor, -101);
110 number = hildon_number_editor_get_value(number_editor);
111 fail_if (number != 0,
112 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 and then we set the value -101 but we get %d instead of 0",
115 /* Test 4: Set limits to (-100, 0) */
116 hildon_number_editor_set_range(number_editor, -100, 0);
118 hildon_number_editor_set_value(number_editor, 0);
120 hildon_number_editor_set_value(number_editor, 1);
121 number = hildon_number_editor_get_value(number_editor);
122 fail_if (number != 0,
123 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 and then we set the value 1 but we get %d instead of 0",
126 /* Test 5: Set limits to (-100, -1) */
127 hildon_number_editor_set_range(number_editor, -100, -1);
129 hildon_number_editor_set_value(number_editor, -1);
131 hildon_number_editor_set_value(number_editor, 0);
132 number = hildon_number_editor_get_value(number_editor);
133 fail_if (number != -1,
134 "hildon-number-editor: range_value failed, we set range: 0/100, we set -1 and then we set the value 0 but we get %d instead of -1",
140 * Purpose: Check that the ranges limits are controlled properly
142 * - Set G_MAXINT and G_MININT
143 * - Set a number limit of (0, 100), and test that 0 and 100 work properly
145 START_TEST (test_set_range_limits)
149 /* Test 6: Set limits to (G_MININT, G_MAXINT) */
150 hildon_number_editor_set_range(number_editor, G_MININT, G_MAXINT);
152 /* Test 7: Set limits to (0,100) */
153 hildon_number_editor_set_value(number_editor, 0);
155 number = hildon_number_editor_get_value(number_editor);
156 fail_if (number != 0,
157 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 but we get %d instead of 0",
160 hildon_number_editor_set_value(number_editor, 100);
162 number = hildon_number_editor_get_value(number_editor);
163 fail_if (number != 100,
164 "hildon-number-editor: range_value failed, we set range: 0/100, we set 100 but we get %d instead of 100",
170 * Purpose: Check that the invalid values are controlled properly we
171 * use set/get value to test if our first value is modified
174 * - Change the order of the minimum and maximum and check if it does not change (200, -2)
175 * - Set values where high value is less than low value (0, 100)
176 * - Set a range to a NULL widget
178 START_TEST (test_set_range_invalid)
182 /* Test 8: Set limits to (200, -2) */
183 hildon_number_editor_set_range(number_editor, 200, -2);
185 hildon_number_editor_set_value(number_editor, 0);
187 /* we set 101 and it should not be set if method didn't reverse min and max, the value may continue being 0 */
188 hildon_number_editor_set_value(number_editor, 101);
189 number = hildon_number_editor_get_value(number_editor);
190 fail_if (number != 101,
191 "hildon-number-editor: range_value failed, we set range: 200/-2, and it should not be set so 0/100 should continue being the range, we set 0 and then we set the value 101 but we get %d instead of 0",
194 /* Test 9: Set limits to (100, 0) */
195 hildon_number_editor_set_range(number_editor, 0, 100);
197 hildon_number_editor_set_value(number_editor, 0);
199 /* we set -5 and it should not be set, the value may continue being 0 */
200 hildon_number_editor_set_value(number_editor, -5);
201 number = hildon_number_editor_get_value(number_editor);
202 fail_if (number != 0,
203 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 and then we set the value -5 but we get %d instead of 0",
206 /* we set 101 and it should not be set, the value may continue being 0 */
207 hildon_number_editor_set_value(number_editor, 101);
208 number = hildon_number_editor_get_value(number_editor);
209 fail_if (number != 0,
210 "hildon-number-editor: range_value failed, we set range: 0/100, we set 0 and then we set the value 101 but we get %d instead of 0",
213 /* Test 10: Set a range to a NULL widget */
214 hildon_number_editor_set_range(NULL, 0, 100);
220 /* ---------- Suite creation ---------- */
222 Suite *create_hildon_number_editor_suite()
224 /* Create the suite */
225 Suite *s = suite_create("HildonNumberEditor");
227 /* Create test cases */
228 TCase *tc1 = tcase_create("set_number");
230 /* Create test case for set_number and add it to the suite */
231 tcase_add_checked_fixture(tc1, fx_setup_default_number_editor, fx_teardown_default_number_editor);
232 tcase_add_test(tc1, test_set_range_regular);
233 tcase_add_test(tc1, test_set_range_limits);
234 tcase_add_test(tc1, test_set_range_invalid);
235 suite_add_tcase (s, tc1);
237 /* Return created suite */