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 int system_settings_subscribe_changes(system_settings_key_e key,
28 system_settings_changed_cb callback,
29 void *user_data, system_settings_cb_id *id);
30 int system_settings_unsubscribe_changes(system_settings_key_e key,
31 system_settings_cb_id id);
34 #define SST_DEPRECATED_KEY ((int)SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED + 1)
36 class SstApiCBTest : public ::testing::Test {
40 loop = g_main_loop_new(NULL, FALSE);
43 void TearDown() override
45 g_main_loop_unref(loop);
49 static gboolean checkCallbackIdle(gpointer data)
51 bool *oldVal = (bool*)data;
52 int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, oldVal);
53 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
54 ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, !(*oldVal));
55 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
57 return G_SOURCE_REMOVE;
60 static void changedMultiCallback1(system_settings_key_e key, void *user_data)
62 INFO("changedMultiCallback1 called!");
65 g_main_loop_quit(loop);
68 static void changedMultiCallback2(system_settings_key_e key, void *user_data)
70 INFO("changedMultiCallback2 called!");
73 g_main_loop_quit(loop);
76 static void changedCallback(system_settings_key_e key, void *user_data)
78 INFO("Callback called!");
79 resultCB = SYSTEM_SETTINGS_ERROR_NONE;
80 g_main_loop_quit(loop);
83 static bool ringtoneListCallback(int index, const char *data, void *user_data)
85 INFO("filename(%s)", data);
86 int *ringtone_num = (int*)user_data;
91 static gboolean checkRingtoneIdle(gpointer data)
95 int ret = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneListCallback, &cur_cnt);
97 for (int i = 0; i < ringtoneFilesCnt; i++) {
98 ret = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneFiles[i]);
99 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
101 ret = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneListCallback, &ringtone_num);
102 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
104 for (int i = ringtoneFilesCnt - 1; i >= 0; i--) {
105 ret = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneFiles[i]);
106 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
108 EXPECT_EQ(ringtone_num - cur_cnt, ringtoneFilesCnt);
109 g_main_loop_quit(loop);
110 return G_SOURCE_REMOVE;
114 static GMainLoop *loop;
115 static const char *ringtoneFiles[];
116 static int ringtoneFilesCnt;
119 const char *SstApiCBTest::ringtoneFiles[] = {
120 SYS_SETTINGS_TEST_DIR"/Over the horizon.mp3",
121 SYS_SETTINGS_TEST_DIR"/big_buck_bunny.mp3",
122 SYS_SETTINGS_TEST_DIR"/daliTestVideo.mp3",
123 SYS_SETTINGS_TEST_DIR"/sound_5.mp3",
124 SYS_SETTINGS_TEST_DIR"/tct-content-tizen-tests_video.mp3"
126 int SstApiCBTest::ringtoneFilesCnt = sizeof(ringtoneFiles)/sizeof(const char*);
127 GMainLoop *SstApiCBTest::loop = NULL;
128 int SstApiCBTest::resultCB = 0;
130 TEST(SstApiTest, getValueInt)
133 sstm_vconf_get_int_setup(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 60, 0);
134 int ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &val);
135 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
137 ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, NULL);
138 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
140 ret = system_settings_get_value_int((system_settings_key_e)SST_DEPRECATED_KEY, &val);
141 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
143 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
144 ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &val);
145 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
148 TEST(SstApiTest, setValueInt)
153 sstm_vconf_set_int_setup(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 0);
154 int ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, setVal);
155 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
156 ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &getVal);
157 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
158 EXPECT_EQ(setVal, getVal);
160 ret = system_settings_set_value_int((system_settings_key_e)SST_DEPRECATED_KEY, setVal);
161 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
162 ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, setVal);
163 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
164 ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_TIME_CHANGED, setVal);
165 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED, ret);
168 TEST(SstApiTest, getValueBool)
171 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
172 int ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &val);
173 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
175 ret = system_settings_get_value_bool((system_settings_key_e)SST_DEPRECATED_KEY, NULL);
176 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
177 ret = system_settings_get_value_bool((system_settings_key_e)SST_DEPRECATED_KEY, &val);
178 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
179 ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &val);
180 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
183 TEST(SstApiTest, setValueBool)
187 sstm_vconf_set_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, 0);
188 int ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, setVal);
189 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
190 ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &getVal);
191 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
192 EXPECT_EQ(setVal, getVal);
194 ret = system_settings_set_value_bool((system_settings_key_e)SST_DEPRECATED_KEY, setVal);
195 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
196 ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, setVal);
197 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
198 ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, setVal);
199 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED, ret);
202 TEST(SstApiTest, getValueString)
205 sstm_vconf_get_str_setup(VCONFKEY_REGIONFORMAT, "ko", 0);
206 int ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &val);
207 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
210 ret = system_settings_get_value_string((system_settings_key_e)SST_DEPRECATED_KEY, NULL);
211 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
212 ret = system_settings_get_value_string((system_settings_key_e)SST_DEPRECATED_KEY, &val);
213 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
214 ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &val);
215 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
216 ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, &val);
217 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED, ret);
220 TEST(SstApiTest, setValueString)
223 const char *setVal = "ko_KR";
224 sstm_vconf_set_str_setup(VCONFKEY_REGIONFORMAT, 0);
225 int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, setVal);
226 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
227 ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &getVal);
228 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
229 EXPECT_STREQ(setVal, getVal);
232 ret = system_settings_set_value_string((system_settings_key_e)SST_DEPRECATED_KEY, setVal);
233 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
234 ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, setVal);
235 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
236 ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, setVal);
237 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED, ret);
240 TEST_F(SstApiCBTest, setUnsetChangedCallback)
244 sstm_vconf_notify_key_changed_setup(true);
245 sstm_vconf_ignore_key_changed_setup(true);
246 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
248 int ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedCallback, NULL);
249 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
251 g_idle_add(checkCallbackIdle, &oldVal);
252 g_main_loop_run(loop);
253 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, resultCB);
254 ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION);
255 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
257 ret = system_settings_set_changed_cb((system_settings_key_e)SST_DEPRECATED_KEY, changedCallback, NULL);
258 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
259 ret = system_settings_unset_changed_cb((system_settings_key_e)SST_DEPRECATED_KEY);
260 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
263 TEST_F(SstApiCBTest, setUnsetChangedCallbackERR)
265 sstm_vconf_notify_key_changed_setup(false);
266 int ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedCallback, NULL);
267 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
268 sstm_vconf_ignore_key_changed_setup(false);
269 ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION);
270 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
275 TEST_F(SstApiCBTest, addDeleteForeachValueString)
277 sstm_access_setup(true);
278 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, "[]", 0);
279 g_idle_add(checkRingtoneIdle, NULL);
280 g_main_loop_run(loop);
283 TEST_F(SstApiCBTest, ForeachValueString)
285 sstm_access_setup(true);
286 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, "[]", 0);
288 sstm_opendir_setup(false);
289 int ret = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneListCallback, NULL);
290 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
291 sstm_opendir_setup(true);
294 TEST_F(SstApiCBTest, addDeleteChangedCallback)
298 sstm_vconf_notify_key_changed_setup(true);
299 sstm_vconf_ignore_key_changed_setup(true);
300 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
302 int ret = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedMultiCallback1, NULL);
303 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
304 ret = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedMultiCallback2, NULL);
305 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
307 g_idle_add(checkCallbackIdle, &oldVal);
308 g_main_loop_run(loop);
309 EXPECT_EQ(0x11, resultCB);
310 ret = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedMultiCallback1);
311 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
312 ret = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedMultiCallback2);
313 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
314 ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, oldVal);
315 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
317 ret = system_settings_add_changed_cb((system_settings_key_e)SST_DEPRECATED_KEY, changedMultiCallback1, NULL);
318 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
319 ret = system_settings_remove_changed_cb((system_settings_key_e)SST_DEPRECATED_KEY, changedMultiCallback1);
320 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
323 TEST_F(SstApiCBTest, addDeleteChangedCallbackERR)
325 sstm_vconf_notify_key_changed_setup(false);
326 int ret = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedCallback, NULL);
327 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
328 sstm_vconf_ignore_key_changed_setup(false);
329 ret = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedCallback);
330 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
334 TEST_F(SstApiCBTest, subUnsubscribeCallback)
337 system_settings_cb_id cb[2];
339 sstm_vconf_notify_key_changed_setup(true);
340 sstm_vconf_ignore_key_changed_setup(true);
341 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_MOTION_ACTIVATION, false, 0);
343 int ret = system_settings_subscribe_changes(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedMultiCallback1, NULL, &cb[0]);
344 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
345 ret = system_settings_subscribe_changes(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedMultiCallback2, NULL, &cb[1]);
346 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
348 g_idle_add(checkCallbackIdle, &oldVal);
349 g_main_loop_run(loop);
350 EXPECT_EQ(0x11, resultCB);
351 ret = system_settings_unsubscribe_changes(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, cb[0]);
352 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
353 ret = system_settings_unsubscribe_changes(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, cb[1]);
354 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
355 ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, oldVal);
356 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
358 ret = system_settings_subscribe_changes((system_settings_key_e)SST_DEPRECATED_KEY, changedMultiCallback1, NULL, &cb[0]);
359 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
360 ret = system_settings_unsubscribe_changes((system_settings_key_e)SST_DEPRECATED_KEY, cb[0]);
361 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
364 TEST_F(SstApiCBTest, subUnsubscribeCallbackERR)
366 system_settings_cb_id cb;
367 sstm_vconf_notify_key_changed_setup(false);
368 int ret = system_settings_subscribe_changes(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, changedCallback, NULL, &cb);
369 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
370 sstm_vconf_ignore_key_changed_setup(false);
371 ret = system_settings_unsubscribe_changes(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, cb);
372 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);