efl

Форк
0
/
efl_ui_test_config.c 
237 строк · 8.3 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4

5
#define EFL_ACCESS_OBJECT_PROTECTED
6
#include <Efl_Ui.h>
7
#include <Elementary.h>
8
#include "elm_suite.h"
9

10
#include <stdbool.h>
11
typedef unsigned int uint;
12

13
EFL_START_TEST(efl_config_eoapi)
14
{
15
   Eo *cfg = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
16
   fail_if(!cfg);
17

18
#define CONFIG_CHK(opt, typ, val) do { \
19
   typ old = elm_config_ ## opt ## _get(); \
20
   fail_if(old != efl_config_ ## typ ## _get(cfg, #opt)); \
21
   fail_if(!efl_config_ ## typ ## _set(cfg, #opt, val)); \
22
   fail_if(elm_config_ ## opt ## _get() != val); \
23
   fail_if(efl_config_ ## typ ## _get(cfg, #opt) != val); \
24
   } while (0)
25

26
#define CONFIG_CHKB(opt, val) CONFIG_CHK(opt, bool, val)
27
#define CONFIG_CHKI(opt, val) CONFIG_CHK(opt, int, val)
28

29
#define CONFIG_CHKD_internal(opt, typ, val) do { \
30
   typ old = elm_config_ ## opt ## _get(); \
31
   fail_if(!EINA_DBL_EQ(old, efl_config_ ## typ ## _get(cfg, #opt))); \
32
   fail_if(!efl_config_ ## typ ## _set(cfg, #opt, val)); \
33
   fail_if(!EINA_DBL_EQ(elm_config_ ## opt ## _get(), val)); \
34
   fail_if(!EINA_DBL_EQ(efl_config_ ## typ ## _get(cfg, #opt), val)); \
35
   } while (0)
36
#define CONFIG_CHKD(opt, val) CONFIG_CHKD_internal(opt, double, val)
37

38
   // note: leaks badly
39
#define CONFIG_CHKS(opt, val) do { \
40
   const char *old = elm_config_ ## opt ## _get(); \
41
   fail_if(!eina_streq(old, efl_config_string_get(cfg, #opt))); \
42
   fail_if(!efl_config_string_set(cfg, #opt, val)); \
43
   fail_if(!eina_streq(elm_config_ ## opt ## _get(), val)); \
44
   fail_if(!eina_streq(efl_config_string_get(cfg, #opt), val)); \
45
   } while (0)
46

47
#define CONFIG_CHKE(opt, ival, sval) do { \
48
   elm_config_ ## opt ## _set(ival); \
49
   fail_if(!eina_streq(efl_config_string_get(cfg, #opt), sval)); \
50
   fail_if(!efl_config_string_set(cfg, #opt, sval)); \
51
   fail_if(!eina_streq(efl_config_string_get(cfg, #opt), sval)); \
52
   } while (0)
53

54
   CONFIG_CHKB(scroll_bounce_enabled, !old);
55
   CONFIG_CHKD(scroll_bounce_friction, 0);
56
   CONFIG_CHKD(scroll_page_scroll_friction, 0);
57
   CONFIG_CHKB(context_menu_disabled, !old);
58
   CONFIG_CHKD(scroll_bring_in_scroll_friction, 0);
59
   CONFIG_CHKD(scroll_zoom_friction, 0);
60
   CONFIG_CHKB(scroll_thumbscroll_enabled, !old);
61
   CONFIG_CHKI(scroll_thumbscroll_threshold, 0);
62
   CONFIG_CHKI(scroll_thumbscroll_hold_threshold, 0);
63
   CONFIG_CHKD(scroll_thumbscroll_momentum_threshold, 0);
64
   CONFIG_CHKI(scroll_thumbscroll_flick_distance_tolerance, 0);
65
   CONFIG_CHKD(scroll_thumbscroll_friction, 0);
66
   CONFIG_CHKD(scroll_thumbscroll_min_friction, 0);
67
   CONFIG_CHKD(scroll_thumbscroll_friction_standard, 0);
68
   CONFIG_CHKD(scroll_thumbscroll_border_friction, 0);
69
   CONFIG_CHKD(scroll_thumbscroll_sensitivity_friction, 1.0);
70
   CONFIG_CHKB(scroll_thumbscroll_smooth_start, 0);
71
   CONFIG_CHKB(scroll_animation_disabled, 0);
72
   CONFIG_CHKD(scroll_accel_factor, 0);
73
   CONFIG_CHKD(scroll_thumbscroll_smooth_amount, 0);
74
   CONFIG_CHKD(scroll_thumbscroll_smooth_time_window, 0);
75
   CONFIG_CHKD(scroll_thumbscroll_acceleration_threshold, 0);
76
   CONFIG_CHKD(scroll_thumbscroll_acceleration_time_limit, 0);
77
   CONFIG_CHKD(scroll_thumbscroll_acceleration_weight, 0);
78
   CONFIG_CHKE(focus_autoscroll_mode, ELM_FOCUS_AUTOSCROLL_MODE_NONE, "none");
79
   CONFIG_CHKD(longpress_timeout, 0);
80
   CONFIG_CHKE(softcursor_mode, ELM_SOFTCURSOR_MODE_ON, "on");
81
   CONFIG_CHKD(tooltip_delay, 0);
82
   CONFIG_CHKB(cursor_engine_only, 0);
83
   CONFIG_CHKD(scale, 0);
84
   CONFIG_CHKS(icon_theme, ELM_CONFIG_ICON_THEME_ELEMENTARY);
85
   CONFIG_CHKB(password_show_last, 0);
86
   CONFIG_CHKD(password_show_last_timeout, 0);
87
   CONFIG_CHKS(preferred_engine, 0);
88
   CONFIG_CHKS(accel_preference, 0);
89
   //font_overlay
90
   CONFIG_CHKB(access, 0);
91
   CONFIG_CHKB(selection_unfocused_clear, 0);
92
   //elm_config_font_overlay_unset
93
   //CONFIG_CHKI(font_hint_type, 0); // this has no get!
94
   CONFIG_CHKI(finger_size, 0);
95
   CONFIG_CHKI(cache_flush_interval, 10);
96
   CONFIG_CHKB(cache_flush_enabled, !old);
97
   CONFIG_CHKI(cache_font_cache_size, 0);
98
   CONFIG_CHKI(cache_image_cache_size, 0);
99
   CONFIG_CHKI(cache_edje_file_cache_size, 0);
100
   CONFIG_CHKI(cache_edje_collection_cache_size, 0);
101
   CONFIG_CHKB(vsync, 0);
102
   CONFIG_CHKB(accel_preference_override, 0);
103
   CONFIG_CHKB(focus_highlight_enabled, !old);
104
   CONFIG_CHKB(focus_highlight_animate, 0);
105
   CONFIG_CHKB(focus_highlight_clip_disabled, !old);
106
   CONFIG_CHKE(focus_move_policy, ELM_FOCUS_MOVE_POLICY_IN, "in");
107
   CONFIG_CHKB(item_select_on_focus_disabled, !old);
108
   CONFIG_CHKB(first_item_focus_on_first_focusin, 0);
109
   CONFIG_CHKB(mirrored, 0);
110
   //see clouseau tests
111
   //CONFIG_CHKB(clouseau_enabled, !old);
112
   CONFIG_CHKD(glayer_long_tap_start_timeout, 0);
113
   CONFIG_CHKD(glayer_double_tap_timeout, 0);
114
   //color_overlay
115
   //color_overlay_unset
116
   CONFIG_CHKB(magnifier_enable, 0);
117
   CONFIG_CHKD(magnifier_scale, 0);
118
   CONFIG_CHKB(window_auto_focus_enable, 0);
119
   CONFIG_CHKB(window_auto_focus_animate, 0);
120
   CONFIG_CHKB(popup_scrollable, 0);
121
   CONFIG_CHKB(atspi_mode, 0);
122
   CONFIG_CHKD(transition_duration_factor, 0);
123
   CONFIG_CHKS(web_backend, old); // no value change (requires web support)
124

125
   static const struct {
126
      Edje_Channel chan;
127
      const char  *name;
128
   } channels[] = {
129
   { EDJE_CHANNEL_EFFECT, "audio_mute_effect" },
130
   { EDJE_CHANNEL_BACKGROUND, "audio_mute_background" },
131
   { EDJE_CHANNEL_MUSIC, "audio_mute_music" },
132
   { EDJE_CHANNEL_FOREGROUND, "audio_mute_foreground" },
133
   { EDJE_CHANNEL_INTERFACE, "audio_mute_interface" },
134
   { EDJE_CHANNEL_INPUT, "audio_mute_input" },
135
   { EDJE_CHANNEL_ALERT, "audio_mute_alert" },
136
   { EDJE_CHANNEL_ALL, "audio_mute_all" },
137
   { EDJE_CHANNEL_ALL, "audio_mute" },
138
   };
139

140
   for (unsigned i = 0; i < (sizeof(channels) / sizeof(channels[0])); i++)
141
     {
142
        Eina_Bool b = elm_config_audio_mute_get(channels[i].chan);
143
        if (b != efl_config_bool_get(cfg, channels[i].name))
144
          fail(channels[i].name);
145
        fail_unless(efl_config_bool_set(cfg, channels[i].name, !b));
146
        if(efl_config_bool_get(cfg, channels[i].name) != !b)
147
          fail(channels[i].name);
148
        if(elm_config_audio_mute_get(channels[i].chan) != !b)
149
          fail(channels[i].name);
150
     }
151

152
}
153
EFL_END_TEST
154

155
EFL_START_TEST(efl_config_win)
156
{
157
   Eo *cfg = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
158
   fail_if(!cfg);
159

160
   Eo *win = efl_add_ref(EFL_UI_WIN_CLASS, NULL);
161
   Eo *cfg2 = efl_provider_find(win, EFL_CONFIG_INTERFACE);
162
   fail_if(cfg != cfg2);
163

164
   elm_config_cache_flush_interval_set(42);
165
   fail_if(efl_config_int_get(win, "cache_flush_interval") != 42);
166

167
   efl_unref(win);
168
}
169
EFL_END_TEST
170

171
static inline Eina_Bool
172
_eina_list_string_has(const Eina_List *list, const char *str)
173
{
174
   const char *s;
175
   const Eina_List *l;
176

177
   EINA_LIST_FOREACH(list, l, s)
178
     if (eina_streq(str, s))
179
       return EINA_TRUE;
180

181
   return EINA_FALSE;
182
}
183

184
EFL_START_TEST(efl_config_profiles)
185
{
186
   // this only tests some of the profile APIs. we're not going to mess with
187
   // the global config during make check :)
188

189
   Eo *cfg = efl_provider_find(efl_main_loop_get(), EFL_CONFIG_INTERFACE);
190
   fail_if(!cfg);
191

192
   for (int hidden = 0; hidden <= 1; hidden++)
193
     {
194
        Eina_List *list;
195
        Eina_Iterator *it;
196
        const char *prof;
197
        unsigned int cnt = 0;
198

199
        list = (!hidden) ? elm_config_profile_list_get()
200
                         : elm_config_profile_list_full_get();
201
        it = efl_config_profile_iterate(cfg, hidden);
202
        EINA_ITERATOR_FOREACH(it, prof)
203
          {
204
             fail_if(!_eina_list_string_has(list, prof));
205
             cnt++;
206
          }
207
        fail_if(cnt != eina_list_count(list));
208
        elm_config_profile_list_free(list);
209
        eina_iterator_free(it);
210
     }
211

212
   const char *dir, *profile;
213
   Eina_Stringshare *str;
214

215
   profile = elm_config_profile_get();
216
   fail_if(!profile);
217
   dir = elm_config_profile_dir_get(profile, EINA_TRUE);
218
   str = efl_config_profile_dir_get(cfg, profile, EINA_TRUE);
219
   fail_if(!eina_streq(dir, str));
220
   elm_config_profile_dir_free(dir);
221
   eina_stringshare_del(str);
222

223
   dir = elm_config_profile_dir_get(profile, EINA_FALSE);
224
   str = efl_config_profile_dir_get(cfg, profile, EINA_FALSE);
225
   fail_if(!eina_streq(dir, str));
226
   elm_config_profile_dir_free(dir);
227
   eina_stringshare_del(str);
228

229
}
230
EFL_END_TEST
231

232
void efl_ui_test_config(TCase *tc)
233
{
234
   tcase_add_test(tc, efl_config_eoapi);
235
   tcase_add_test(tc, efl_config_win);
236
   tcase_add_test(tc, efl_config_profiles);
237
}
238

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.