2 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <gtest/gtest.h>
22 #include "system_settings.h"
23 #include "mocks/sstt_mock.h"
27 #include "sst_vconf.h"
28 #include "sst_interface.h"
31 class SstVconfCBTest : public ::testing::Test {
35 loop = g_main_loop_new(NULL, FALSE);
38 void TearDown() override
40 g_main_loop_unref(loop);
44 static gboolean checkCallbackIdle(gpointer data)
46 bool *val = (bool*)data;
47 int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, val);
48 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
49 ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, !(*val));
50 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
52 return G_SOURCE_REMOVE;
55 static void changedMultiCallback1(system_settings_key_e key, void *user_data)
57 INFO("changedMultiCallback1 called!");
60 g_main_loop_quit(loop);
63 static void changedMultiCallback2(system_settings_key_e key, void *user_data)
65 INFO("changedMultiCallback2 called!");
68 g_main_loop_quit(loop);
71 static void changedCallback(system_settings_key_e key, void *user_data)
73 INFO("Callback called!");
74 resultCB = SYSTEM_SETTINGS_ERROR_NONE;
75 g_main_loop_quit(loop);
79 static GMainLoop *loop;
80 static const char *ringtoneFiles[];
83 GMainLoop *SstVconfCBTest::loop = NULL;
84 int SstVconfCBTest::resultCB = 0;
86 TEST(SstVconfTest, getValueInt)
90 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &iface);
91 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
93 sstm_vconf_get_int_setup(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 60, 0);
94 ret = sst_vconf_get_int(iface, &val);
95 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
98 TEST(SstVconfTest, getValueIntERR)
101 sst_interface *iface;
102 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &iface);
103 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
105 sstm_vconf_get_int_setup(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 60, -1);
106 ret = sst_vconf_get_int(iface, &val);
107 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
110 TEST(SstVconfTest, setValueInt)
114 sst_interface *iface;
115 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &iface);
116 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
118 sstm_vconf_set_int_setup(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 0);
120 ret = sst_vconf_set_int(iface, setVal);
121 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
122 ret = sst_vconf_get_int(iface, &getVal);;
123 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
124 EXPECT_EQ(setVal, getVal);
127 TEST(SstVconfTest, setValueIntERR)
129 sst_interface *iface;
130 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &iface);
131 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
133 sstm_vconf_set_int_setup(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, -1);
134 ret = sst_vconf_set_int(iface, 60);
135 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
138 TEST(SstVconfTest, getValueBool)
141 sst_interface *iface;
142 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
143 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
145 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
146 ret = sst_vconf_get_bool(iface, &val);
147 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
150 TEST(SstVconfTest, getValueBoolERR)
153 sst_interface *iface;
154 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
155 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
157 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, -1);
158 ret = sst_vconf_get_bool(iface, &val);
159 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
162 TEST(SstVconfTest, setValueBool)
166 sst_interface *iface;
167 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
168 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
170 sstm_vconf_set_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, 0);
171 ret = sst_vconf_get_bool(iface, &getVal);
172 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
174 ret = sst_vconf_set_bool(iface, setVal);
175 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
176 ret = sst_vconf_get_bool(iface, &getVal);
177 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
178 EXPECT_EQ(setVal, getVal);
179 ret = sst_vconf_set_bool(iface, !getVal);
180 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
183 TEST(SstVconfTest, setValueBoolERR)
185 sst_interface *iface;
186 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
187 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
189 sstm_vconf_set_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, -1);
190 ret = sst_vconf_set_bool(iface, false);
191 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
194 TEST(SstVconfTest, getValueString)
197 sst_interface *iface;
198 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &iface);
199 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
201 sstm_vconf_get_str_setup(VCONFKEY_REGIONFORMAT, "ko", 0);
202 ret = sst_vconf_get_str(iface, &val);
203 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
206 sstm_vconf_clear_str(VCONFKEY_REGIONFORMAT);
209 TEST(SstVconfTest, getValueStringERR)
212 sst_interface *iface;
213 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &iface);
214 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
216 sstm_vconf_get_str_setup(VCONFKEY_REGIONFORMAT, "ko", -1);
217 ret = sst_vconf_get_str(iface, &val);
218 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
220 sstm_vconf_clear_str(VCONFKEY_REGIONFORMAT);
223 TEST(SstVconfTest, setValueString)
226 const char *setVal = "ko_KR";
227 sst_interface *iface;
228 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &iface);
229 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
231 sstm_vconf_set_str_setup(VCONFKEY_REGIONFORMAT, 0);
232 ret = sst_vconf_set_str(iface, setVal);
233 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
234 ret = sst_vconf_get_str(iface, &getVal);
235 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
236 EXPECT_STREQ(setVal, getVal);
239 sstm_vconf_clear_str(VCONFKEY_REGIONFORMAT);
242 TEST_F(SstVconfCBTest, setUnsetChangedCallback)
245 sst_interface *iface;
246 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
247 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
249 sstm_vconf_notify_key_changed_setup(true);
250 sstm_vconf_ignore_key_changed_setup(true);
251 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
253 ret = sst_vconf_set_cb(iface, changedCallback, NULL);
254 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
256 g_idle_add(checkCallbackIdle, &val);
257 g_main_loop_run(loop);
258 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, resultCB);
259 ret = sst_vconf_unset_cb(iface);
260 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
263 TEST_F(SstVconfCBTest, setUnsetChangedCallbackERR)
265 sst_interface *iface;
266 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
267 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
268 ret = sst_vconf_set_cb(iface, NULL, NULL);
269 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
271 sstm_vconf_notify_key_changed_setup(false);
272 ret = sst_vconf_set_cb(iface, changedCallback, NULL);
273 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
274 sstm_vconf_ignore_key_changed_setup(false);
275 ret = sst_vconf_unset_cb(iface);
276 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
279 TEST_F(SstVconfCBTest, addDeleteChangedCallback)
282 sst_interface *iface;
284 sstm_vconf_notify_key_changed_setup(true);
285 sstm_vconf_ignore_key_changed_setup(true);
286 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
288 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
289 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
290 ret = sst_vconf_add_multi_cb(iface, changedMultiCallback1, NULL);
291 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
292 ret = sst_vconf_add_multi_cb(iface, changedMultiCallback2, NULL);
293 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
295 g_idle_add(checkCallbackIdle, &val);
296 g_main_loop_run(loop);
297 EXPECT_EQ(0x11, resultCB);
298 ret = sst_vconf_del_multi_cb(iface, changedMultiCallback1);
299 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
300 ret = sst_vconf_del_multi_cb(iface, changedMultiCallback2);
301 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
304 TEST_F(SstVconfCBTest, addDeleteChangedCallbackERR)
306 sst_interface *iface;
307 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
308 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
309 ret = sst_vconf_add_multi_cb(iface, NULL, NULL);
310 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
312 sstm_vconf_notify_key_changed_setup(false);
313 ret = sst_vconf_add_multi_cb(iface, changedCallback, NULL);
314 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
315 sstm_vconf_ignore_key_changed_setup(false);
316 ret = sst_vconf_del_multi_cb(iface, changedCallback);
317 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
320 TEST_F(SstVconfCBTest, subscribeUnsubscribe)
323 sst_interface *iface;
324 system_settings_cb_id cb[2];
326 sstm_vconf_notify_key_changed_setup(true);
327 sstm_vconf_ignore_key_changed_setup(true);
328 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
330 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
331 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
332 ret = sst_vconf_subscribe(iface, changedMultiCallback1, NULL, &cb[0]);
333 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
334 ret = sst_vconf_subscribe(iface, changedMultiCallback2, NULL, &cb[1]);
335 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
337 g_idle_add(checkCallbackIdle, &val);
338 g_main_loop_run(loop);
339 EXPECT_EQ(0x11, resultCB);
340 ret = sst_vconf_unsubscribe(iface, cb[0]);
341 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
342 ret = sst_vconf_unsubscribe(iface, cb[1]);
343 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
346 TEST_F(SstVconfCBTest, subscribeUnsubscribeERR)
348 sst_interface *iface;
349 system_settings_cb_id cb;
350 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &iface);
351 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
352 ret = sst_vconf_subscribe(iface, NULL, NULL, &cb);
353 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
355 sstm_vconf_notify_key_changed_setup(false);
356 ret = sst_vconf_subscribe(iface, changedCallback, NULL, &cb);
357 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
358 sstm_vconf_ignore_key_changed_setup(false);
359 ret = sst_vconf_unsubscribe(iface, cb);
360 changedCallback(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, NULL);