Remove leftover function declaration
[hildon] / tests / check-hildon-volumebar-range.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 #include <stdlib.h>
25 #include <check.h>
26 #include <gtk/gtkmain.h>
27 #include <gtk/gtkcontainer.h>
28 #include "test_suites.h"
29 #include "check_utils.h"
30
31 #include <hildon/hildon-volumebar-range.h>
32
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
39
40 /* -------------------- Fixtures -------------------- */
41
42 static GtkWidget *showed_window = NULL;
43 static HildonVolumebarRange *volumebar_range = NULL;
44
45 static void
46 fx_setup_default_volumebar_range ()
47 {
48   int argc = 0;
49
50   gtk_init(&argc, NULL);
51
52   volumebar_range = HILDON_VOLUMEBAR_RANGE(hildon_volumebar_range_new(GTK_ORIENTATION_VERTICAL));
53
54   showed_window =  create_test_window ();
55
56   /* This packs the widget into the window (a gtk container). */
57   gtk_container_add (GTK_CONTAINER (showed_window), GTK_WIDGET (volumebar_range));
58
59   /* Displays the widget and the window */
60   show_all_test_window (showed_window);
61
62   /* Check volumebar range object has been created properly */
63   fail_if(!HILDON_VOLUMEBAR_RANGE(volumebar_range),
64           "hildon-volumebar-range: Creation failed.");
65 }
66
67 static void
68 fx_teardown_default_volumebar_range ()
69 {
70
71   /* Destroy the window */
72   gtk_widget_destroy (showed_window);
73 }
74
75
76 /* -------------------- Test cases -------------------- */
77
78 /* ----- Test case for set/get_level -----*/
79
80 /**
81  * Purpose: Check level usage
82  * Cases considered:
83  *    - Set level over the threshold limit 
84  *    - Set level under the threshold limit.
85  */
86 START_TEST (test_set_get_level_regular)
87 {
88   gdouble old_level, level, ret_level;
89
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",
96           level, ret_level);
97
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);
106 }
107 END_TEST
108
109 /**
110  * Purpose: Test handling of limit values
111  * Cases considered:
112  *    - Set level to VOLUMEBAR_RANGE_MINIMUM_VALUE
113  *    - Set level to VOLUMEBAR_RANGE_MAXIMUM_VALUE
114  */
115 START_TEST (test_set_get_level_limits)
116 {
117   gdouble level, ret_level;
118
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",
127           level, ret_level);  
128
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",
135           level, ret_level); 
136 }
137 END_TEST
138
139 /**
140  * Purpose: Test handling of invalid values 
141  * Cases considered:
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
146  */
147 START_TEST (test_set_get_level_invalid)
148 {
149   gdouble level, ret_level;
150
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",
157           level, ret_level);
158
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",
165           level, ret_level);
166
167   /* Test3: Set level with NULL object */
168   hildon_volumebar_range_set_level(NULL, level);
169
170   /* Test4: Get level with NULL object */
171   hildon_volumebar_range_get_level(NULL);
172 }
173 END_TEST
174
175 /* ---------- Suite creation ---------- */
176
177 Suite *create_hildon_volumebar_range_suite()
178 {
179   /* Create the suite */
180   Suite *s = suite_create("HildonVolumebarRange");
181
182   /* Create test cases */
183   TCase *tc1 = tcase_create("set_get_level");
184
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);
191
192   /* Return created suite */
193   return s;
194 }
195
196