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
26 #include <gtk/gtkmain.h>
27 #include <gtk/gtkcontainer.h>
28 #include "test_suites.h"
29 #include "check_utils.h"
31 #include "hildon-volumebar-range.h"
33 /* Copied from hildon-volumebar-range.h because
34 there is no way to retrieve this values */
35 #define VOLUMEBAR_RANGE_INITIAL_VALUE 50.0
36 #define VOLUMEBAR_RANGE_MINIMUM_VALUE 0.0
37 #define VOLUMEBAR_RANGE_MAXIMUM_VALUE 100.0
38 #define CHANGE_THRESHOLD 0.001
40 /* -------------------- Fixtures -------------------- */
42 static GtkWidget *showed_window = NULL;
43 static HildonVolumebarRange *volumebar_range = NULL;
46 fx_setup_default_volumebar_range ()
50 gtk_init(&argc, NULL);
52 volumebar_range = HILDON_VOLUMEBAR_RANGE(hildon_volumebar_range_new(GTK_ORIENTATION_VERTICAL));
54 showed_window = create_test_window ();
56 /* This packs the widget into the window (a gtk container). */
57 gtk_container_add (GTK_CONTAINER (showed_window), GTK_WIDGET (volumebar_range));
59 /* Displays the widget and the window */
60 show_all_test_window (showed_window);
62 /* Check volumebar range object has been created properly */
63 fail_if(!HILDON_VOLUMEBAR_RANGE(volumebar_range),
64 "hildon-volumebar-range: Creation failed.");
68 fx_teardown_default_volumebar_range ()
71 /* Destroy the window */
72 gtk_widget_destroy (showed_window);
76 /* -------------------- Test cases -------------------- */
78 /* ----- Test case for set/get_level -----*/
81 * Purpose: Check level usage
83 * - Set level over the threshold limit
84 * - Set level under the threshold limit.
86 START_TEST (test_set_get_level_regular)
88 gdouble old_level, level, ret_level;
90 /* Test1: set level so change is over the threshold limit */
91 level = VOLUMEBAR_RANGE_INITIAL_VALUE + 1.0 + CHANGE_THRESHOLD;
92 hildon_volumebar_range_set_level(volumebar_range, level);
93 ret_level = hildon_volumebar_range_get_level(volumebar_range);
94 fail_if(ret_level != level,
95 "hildon-volumebar-range: Set level to %.5f, but get level returned %.5f",
98 /* Test2: set level so change is under the threshold limit */
99 old_level = ret_level;
100 level += (gdouble) (CHANGE_THRESHOLD/2.0);
101 hildon_volumebar_range_set_level(volumebar_range, level);
102 ret_level = hildon_volumebar_range_get_level(volumebar_range);
103 fail_if(ret_level == level,
104 "hildon-volumebar-range: Set level to %.5f when current level is %.5f, but get level returned %.5f",
105 level, old_level, ret_level);
110 * Purpose: Test handling of limit values
112 * - Set level to VOLUMEBAR_RANGE_MINIMUM_VALUE
113 * - Set level to VOLUMEBAR_RANGE_MAXIMUM_VALUE
115 START_TEST (test_set_get_level_limits)
117 gdouble level, ret_level;
119 /* Test1: Set level to minimum allowed (first set it the a different value) */
120 level = (VOLUMEBAR_RANGE_MINIMUM_VALUE - VOLUMEBAR_RANGE_MINIMUM_VALUE) / 2.0;
121 hildon_volumebar_range_set_level(volumebar_range, level);
122 level = VOLUMEBAR_RANGE_MINIMUM_VALUE;
123 hildon_volumebar_range_set_level(volumebar_range, level);
124 ret_level = hildon_volumebar_range_get_level(volumebar_range);
125 fail_if(ret_level != level,
126 "hildon-volumebar-range: Set level to %.5f, but get level returned %.5f",
129 /* Test2: Set level to maximum allowed */
130 level = VOLUMEBAR_RANGE_MAXIMUM_VALUE;
131 hildon_volumebar_range_set_level(volumebar_range, level);
132 ret_level = hildon_volumebar_range_get_level(volumebar_range);
133 fail_if(ret_level != level,
134 "hildon-volumebar-range: Set level to %.5f, but get level returned %.5f",
140 * Purpose: Test handling of invalid values
142 * - Set level under the minimum value
143 * - Set level over the maximum value
144 * - Set level with NULL object
145 * - Get level with NULL object
147 START_TEST (test_set_get_level_invalid)
149 gdouble level, ret_level;
151 /* Test1: Set level under minimum value */
152 level = VOLUMEBAR_RANGE_MINIMUM_VALUE - 1.0 - CHANGE_THRESHOLD;
153 hildon_volumebar_range_set_level(volumebar_range, level);
154 ret_level = hildon_volumebar_range_get_level(volumebar_range);
155 fail_if(ret_level != VOLUMEBAR_RANGE_MINIMUM_VALUE,
156 "hildon-volumebar-range: Set level to %.5f (under the minimum allowed), and get level returned %.5f",
159 /* Test2: Set level over maximum value */
160 level = VOLUMEBAR_RANGE_MAXIMUM_VALUE + 1.0 + CHANGE_THRESHOLD;
161 hildon_volumebar_range_set_level(volumebar_range, level);
162 ret_level = hildon_volumebar_range_get_level(volumebar_range);
163 fail_if(ret_level != VOLUMEBAR_RANGE_MAXIMUM_VALUE,
164 "hildon-volumebar-range: Set level to %.5f (greater than maximum allowed), and get level returned %.5f",
167 /* Test3: Set level with NULL object */
168 hildon_volumebar_range_set_level(NULL, level);
170 /* Test4: Get level with NULL object */
171 hildon_volumebar_range_get_level(NULL);
175 /* ---------- Suite creation ---------- */
177 Suite *create_hildon_volumebar_range_suite()
179 /* Create the suite */
180 Suite *s = suite_create("HildonVolumebarRange");
182 /* Create test cases */
183 TCase *tc1 = tcase_create("set_get_level");
185 /* Create test case for set/get_mute and add it to the suite */
186 tcase_add_checked_fixture(tc1, fx_setup_default_volumebar_range, fx_teardown_default_volumebar_range);
187 tcase_add_test(tc1, test_set_get_level_regular);
188 tcase_add_test(tc1, test_set_get_level_limits);
189 tcase_add_test(tc1, test_set_get_level_invalid);
190 suite_add_tcase (s, tc1);
192 /* Return created suite */