Merge "custom eail widget implementation" into tizen
[platform/core/uifw/eail.git] / tests / eail_spinner_tc2.c
1 /*
2  * Tested interface: AtkValue
3  *
4  * Tested AtkObject: EailSpinner
5  *
6  * Description: Test AtkValue interface
7  *
8  * Test input: accessible object representing EailSpinner
9  *
10  * Expected test result: test should return 0 (success)
11  */
12
13 #include <Elementary.h>
14 #include <atk/atk.h>
15
16 #include "eail_test_utils.h"
17
18 INIT_TEST("EailSpinner")
19
20 struct
21 {
22    double min, max, set, step;
23 }
24 static sp[4] = { { 0,   100, 80,  1   },
25                  { 0,   100, 2.2, 1   },
26                  { -50, 250, 100, 1.5 },
27                  { 0,   100, 13,  1   } };
28
29 static void
30 _changed_cb(void *data, Evas_Object *obj, void *event_info)
31 {
32    _printf("Value changed to %0.f\n", elm_spinner_value_get(obj));
33 }
34
35 static void
36 _init_spinner(Evas_Object *win)
37 {
38    Evas_Object *bg, *bx, *sp1, *sp2, *sp3, *sp4;
39
40    bg = elm_bg_add(win);
41    elm_win_resize_object_add(win, bg);
42    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
43    evas_object_show(bg);
44
45    bx = elm_box_add(win);
46    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
47    elm_win_resize_object_add(win, bx);
48    evas_object_show(bx);
49
50    // default
51    sp1 = elm_spinner_add(win);
52    elm_spinner_value_set(sp1, sp[0].set);
53    evas_object_size_hint_align_set(sp1, EVAS_HINT_FILL, 0.5);
54    evas_object_size_hint_weight_set(sp1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
55    elm_box_pack_end(bx, sp1);
56    evas_object_show(sp1);
57
58    // format
59    sp2 = elm_spinner_add(win);
60    elm_spinner_label_format_set(sp2, "Percentage %%%1.2f something");
61    elm_spinner_value_set(sp2, sp[1].set);
62    evas_object_size_hint_align_set(sp2, EVAS_HINT_FILL, 0.5);
63    evas_object_size_hint_weight_set(sp2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
64    elm_box_pack_end(bx, sp2);
65    evas_object_show(sp2);
66
67    // min max, step and wrap
68    sp3 = elm_spinner_add(win);
69    elm_spinner_label_format_set(sp3, "%1.1f units");
70    elm_spinner_step_set(sp3, sp[2].step);
71    elm_spinner_wrap_set(sp3, EINA_TRUE);
72    elm_spinner_min_max_set(sp3, sp[2].min, sp[2].max);
73    elm_spinner_value_set(sp3, sp[2].set);
74    evas_object_size_hint_align_set(sp3, EVAS_HINT_FILL, 0.5);
75    evas_object_size_hint_weight_set(sp3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
76    elm_box_pack_end(bx, sp3);
77    evas_object_show(sp3);
78
79    sp4 = elm_spinner_add(win);
80    elm_spinner_value_set(sp4, sp[3].set);
81    evas_object_size_hint_align_set(sp4, EVAS_HINT_FILL, 0.5);
82    evas_object_size_hint_weight_set(sp4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
83    elm_box_pack_end(bx, sp4);
84    evas_object_show(sp4);
85    evas_object_smart_callback_add(sp4, "changed", _changed_cb, NULL);
86
87    eailu_test_code_called = 1;
88 }
89
90 static void
91 _do_test(AtkObject *obj)
92 {
93    double minimum, maximum, current, minimum_increment;
94    const double val_test_set = 33.3;
95
96    GValue value = G_VALUE_INIT;
97    g_value_init(&value, G_TYPE_DOUBLE);
98
99    atk_value_get_minimum_value(ATK_VALUE(obj), &value);
100    minimum = g_value_get_double(&value);
101
102    atk_value_get_maximum_value(ATK_VALUE(obj), &value);
103    maximum = g_value_get_double(&value);
104
105    atk_value_get_current_value(ATK_VALUE(obj), &value);
106    current = g_value_get_double(&value);
107
108    atk_value_get_minimum_increment(ATK_VALUE(obj), &value);
109    minimum_increment = g_value_get_double(&value);
110
111    if (float_equal(sp[0].set, current) &&
112        float_equal(sp[0].min, minimum) &&
113        float_equal(sp[0].max, maximum) &&
114        float_equal(sp[0].step, minimum_increment))
115      {
116         _printf("spinner 1: initialized values - correctly\n");
117      }
118    else if (float_equal(sp[1].set, current) &&
119             float_equal(sp[1].min, minimum) &&
120             float_equal(sp[1].max, maximum) &&
121             float_equal(sp[1].step, minimum_increment))
122      {
123         _printf("spinner 2: initialized values - correctly\n");
124      }
125    else if (float_equal(sp[2].set, current) &&
126             float_equal(sp[2].min, minimum) &&
127             float_equal(sp[2].max, maximum) &&
128             float_equal(sp[2].step, minimum_increment))
129      {
130         _printf("spinner 3: initialized values - correctly\n");
131      }
132    else if (float_equal(sp[3].set, current) &&
133             float_equal(sp[3].min, minimum) &&
134             float_equal(sp[3].max, maximum) &&
135             float_equal(sp[3].step, minimum_increment))
136      {
137         _printf("spinner 4: initialized values - correctly\n");
138      }
139    else
140      {
141         _printf("initialized values ​​are different from returned by ATK");
142         g_assert(FALSE);
143      }
144
145    g_value_set_double(&value, val_test_set);
146    g_assert(atk_value_set_current_value(ATK_VALUE(obj), &value));
147    _printf("atk_value_set_current_value: %0.2f\n", val_test_set);
148
149    atk_value_get_current_value(ATK_VALUE(obj), &value);
150    current = g_value_get_double(&value);
151    _printf("atk_value_get_current_value: %0.2f\n", current);
152
153    g_assert(float_equal(val_test_set, current));
154
155    g_value_set_double(&value, minimum - 1);
156    g_assert(!atk_value_set_current_value(ATK_VALUE(obj), &value));
157
158    g_value_set_double(&value, maximum + 1);
159    g_assert(!atk_value_set_current_value(ATK_VALUE(obj), &value));
160 }
161
162 EAPI_MAIN int
163 elm_main(int argc, char **argv)
164 {
165    Evas_Object *win;
166
167    win = eailu_create_test_window_with_glib_init(_on_done, _on_focus_in);
168    g_assert(win);
169    _init_spinner(win);
170    evas_object_show(win);
171    elm_run();
172    elm_shutdown();
173
174    return 0;
175 }
176 ELM_MAIN()