2 * Copyright (C) 2006 Nokia Corporation.
4 * Contact: Luc Pionchon <luc.pionchon@nokia.com>
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.
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.
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
25 #include <gtk/gtkmain.h>
26 #include <gtk/gtkcontainer.h>
27 #include "test_suites.h"
28 #include "check_utils.h"
30 #include "hildon-volumebar-range.h"
32 /* Copied from hildon-volumebar-range.h because
33 there is no way to retrieve this values */
34 #define VOLUMEBAR_RANGE_INITIAL_VALUE 50.0
35 #define VOLUMEBAR_RANGE_MINIMUM_VALUE 0.0
36 #define VOLUMEBAR_RANGE_MAXIMUM_VALUE 100.0
37 #define CHANGE_THRESHOLD 0.001
39 /* -------------------- Fixtures -------------------- */
41 static GtkWidget *showed_window = NULL;
42 static HildonVolumebarRange *volumebar_range = NULL;
45 fx_setup_default_volumebar_range ()
49 gtk_init(&argc, NULL);
51 volumebar_range = HILDON_VOLUMEBAR_RANGE(hildon_volumebar_range_new(GTK_ORIENTATION_VERTICAL));
53 showed_window = create_test_window ();
55 /* This packs the widget into the window (a gtk container). */
56 gtk_container_add (GTK_CONTAINER (showed_window), GTK_WIDGET (volumebar_range));
58 /* Displays the widget and the window */
59 show_all_test_window (showed_window);
61 /* Check volumebar range object has been created properly */
62 fail_if(!HILDON_VOLUMEBAR_RANGE(volumebar_range),
63 "hildon-volumebar-range: Creation failed.");
67 fx_teardown_default_volumebar_range ()
70 /* Destroy the window */
71 gtk_widget_destroy (showed_window);
75 /* -------------------- Test cases -------------------- */
77 /* ----- Test case for set/get_level -----*/
80 * Purpose: Check level usage
82 * - Set level over the threshold limit
83 * - Set level under the threshold limit.
85 START_TEST (test_set_get_level_regular)
87 gdouble old_level, level, ret_level;
89 /* Test1: set level so change is over the threshold limit */
90 level = VOLUMEBAR_RANGE_INITIAL_VALUE + 1.0 + CHANGE_THRESHOLD;
91 hildon_volumebar_range_set_level(volumebar_range, level);
92 ret_level = hildon_volumebar_range_get_level(volumebar_range);
93 fail_if(ret_level != level,
94 "hildon-volumebar-range: Set level to %.5f, but get level returned %.5f",
97 /* Test2: set level so change is under the threshold limit */
98 old_level = ret_level;
99 level += (gdouble) (CHANGE_THRESHOLD/2.0);
100 hildon_volumebar_range_set_level(volumebar_range, level);
101 ret_level = hildon_volumebar_range_get_level(volumebar_range);
102 fail_if(ret_level == level,
103 "hildon-volumebar-range: Set level to %.5f when current level is %.5f, but get level returned %.5f",
104 level, old_level, ret_level);
109 * Purpose: Test handling of limit values
111 * - Set level to VOLUMEBAR_RANGE_MINIMUM_VALUE
112 * - Set level to VOLUMEBAR_RANGE_MAXIMUM_VALUE
114 START_TEST (test_set_get_level_limits)
116 gdouble level, ret_level;
118 /* Test1: Set level to minimum allowed (first set it the a different value) */
119 level = (VOLUMEBAR_RANGE_MINIMUM_VALUE - VOLUMEBAR_RANGE_MINIMUM_VALUE) / 2.0;
120 hildon_volumebar_range_set_level(volumebar_range, level);
121 level = VOLUMEBAR_RANGE_MINIMUM_VALUE;
122 hildon_volumebar_range_set_level(volumebar_range, level);
123 ret_level = hildon_volumebar_range_get_level(volumebar_range);
124 fail_if(ret_level != level,
125 "hildon-volumebar-range: Set level to %.5f, but get level returned %.5f",
128 /* Test2: Set level to maximum allowed */
129 level = VOLUMEBAR_RANGE_MAXIMUM_VALUE;
130 hildon_volumebar_range_set_level(volumebar_range, level);
131 ret_level = hildon_volumebar_range_get_level(volumebar_range);
132 fail_if(ret_level != level,
133 "hildon-volumebar-range: Set level to %.5f, but get level returned %.5f",
139 * Purpose: Test handling of invalid values
141 * - Set level under the minimum value
142 * - Set level over the maximum value
143 * - Set level with NULL object
144 * - Get level with NULL object
146 START_TEST (test_set_get_level_invalid)
148 gdouble level, ret_level;
150 /* Test1: Set level under minimum value */
151 level = VOLUMEBAR_RANGE_MINIMUM_VALUE - 1.0 - CHANGE_THRESHOLD;
152 hildon_volumebar_range_set_level(volumebar_range, level);
153 ret_level = hildon_volumebar_range_get_level(volumebar_range);
154 fail_if(ret_level != VOLUMEBAR_RANGE_MINIMUM_VALUE,
155 "hildon-volumebar-range: Set level to %.5f (under the minimum allowed), and get level returned %.5f",
158 /* Test2: Set level over maximum value */
159 level = VOLUMEBAR_RANGE_MAXIMUM_VALUE + 1.0 + CHANGE_THRESHOLD;
160 hildon_volumebar_range_set_level(volumebar_range, level);
161 ret_level = hildon_volumebar_range_get_level(volumebar_range);
162 fail_if(ret_level != VOLUMEBAR_RANGE_MAXIMUM_VALUE,
163 "hildon-volumebar-range: Set level to %.5f (greater than maximum allowed), and get level returned %.5f",
166 /* Test3: Set level with NULL object */
167 hildon_volumebar_range_set_level(NULL, level);
169 /* Test4: Get level with NULL object */
170 hildon_volumebar_range_get_level(NULL);
174 /* ---------- Suite creation ---------- */
176 Suite *create_hildon_volumebar_range_suite()
178 /* Create the suite */
179 Suite *s = suite_create("HildonVolumebarRange");
181 /* Create test cases */
182 TCase *tc1 = tcase_create("set_get_level");
184 /* Create test case for set/get_mute and add it to the suite */
185 tcase_add_checked_fixture(tc1, fx_setup_default_volumebar_range, fx_teardown_default_volumebar_range);
186 tcase_add_test(tc1, test_set_get_level_regular);
187 tcase_add_test(tc1, test_set_get_level_limits);
188 tcase_add_test(tc1, test_set_get_level_invalid);
189 suite_add_tcase (s, tc1);
191 /* Return created suite */