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_sound.h"
28 #include "sst_vconf.h"
29 #include "sst_interface.h"
32 class SstSoundTest : public ::testing::Test {
36 loop = g_main_loop_new(NULL, FALSE);
39 void TearDown() override
41 g_main_loop_unref(loop);
45 static bool ringtoneListCallback(int index, const char *data, void *user_data)
47 INFO("filename(%s)", data);
48 int *ringtone_num = (int*)user_data;
53 static gboolean checkRingtoneIdle(gpointer data)
57 int ret = sst_sound_get_call_ringtone_list(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneListCallback, &cur_cnt);
59 for (int i = 0; i < ringtoneFilesCnt; i++) {
60 ret = sst_sound_add_call_ringtone(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneFiles[i]);
61 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
63 ret = sst_sound_get_call_ringtone_list(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneListCallback, &ringtone_num);
64 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
66 for (int i = ringtoneFilesCnt - 1; i >= 0; i--) {
67 ret = sst_sound_del_call_ringtone(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneFiles[i]);
68 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
70 EXPECT_EQ(ringtone_num - cur_cnt, ringtoneFilesCnt);
71 g_main_loop_quit(loop);
72 return G_SOURCE_REMOVE;
74 static GMainLoop *loop;
75 static const char *ringtonePath;
76 static int ringtoneFilesCnt;
77 static const char *ringtoneFiles[];
80 const char *SstSoundTest::ringtonePath = SYS_SETTINGS_TEST_DIR "/ringtone_sdk.mp3";
81 const char *SstSoundTest::ringtoneFiles[] = {
82 SYS_SETTINGS_TEST_DIR"/Over the horizon.mp3",
83 SYS_SETTINGS_TEST_DIR"/sound_5.mp3",
84 SYS_SETTINGS_TEST_DIR"/big_buck_bunny.mp3",
85 SYS_SETTINGS_TEST_DIR"/daliTestVideo.mp3",
86 SYS_SETTINGS_TEST_DIR"/tct-content-tizen-tests_video.mp3"
88 int SstSoundTest::ringtoneFilesCnt = sizeof(ringtoneFiles)/sizeof(const char*);
89 GMainLoop *SstSoundTest::loop = NULL;
91 TEST_F(SstSoundTest, getCallRingtone)
95 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &iface);
96 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
98 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, ringtonePath, 0);
99 ret = sst_sound_get_call_ringtone(iface, &val);
100 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
104 TEST_F(SstSoundTest, getCallRingtoneERR)
107 sst_interface *iface;
108 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &iface);
109 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
111 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, "error", -1);
112 ret = sst_sound_get_call_ringtone(iface, &val);
113 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
116 TEST_F(SstSoundTest, setCallRingtone)
119 sst_interface *iface;
120 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &iface);
121 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
123 sstm_access_setup(true);
124 sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, 0);
126 ret = sst_sound_set_call_ringtone(iface, "not_exist.mp3");
127 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
129 ret = sst_sound_set_call_ringtone(iface, ringtonePath);
130 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
132 ret = sst_sound_get_call_ringtone(iface, &getVal);
133 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
134 EXPECT_STREQ(ringtonePath, getVal);
139 TEST_F(SstSoundTest, setCallRingtoneERR)
141 sst_interface *iface;
142 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &iface);
143 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
145 sstm_access_setup(true);
146 sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, -1);
147 ret = sst_sound_set_call_ringtone(iface, ringtonePath);
148 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
151 TEST_F(SstSoundTest, addDelGetRingtone)
153 sstm_access_setup(true);
154 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_USER_LIST, "[]", 0);
155 g_idle_add(checkRingtoneIdle, NULL);
156 g_main_loop_run(loop);
160 TEST_F(SstSoundTest, getEmailAlert)
163 sst_interface *iface;
164 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &iface);
165 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
167 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_NOTI_RINGTONE_DEFAULT_PATH_STR, ringtonePath, 0);
168 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, "test.mp3", 0);
170 ret = sst_sound_get_email_alert(iface, &val);
171 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
174 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtonePath, 0);
176 ret = sst_sound_get_email_alert(iface, &val);
177 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
181 TEST_F(SstSoundTest, getEmailAlertERR)
184 sst_interface *iface;
185 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &iface);
186 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
188 sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtonePath, -1);
189 ret = sst_sound_get_email_alert(iface, &val);
190 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
193 TEST_F(SstSoundTest, setEmailAlert)
196 sst_interface *iface;
197 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &iface);
198 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
200 sstm_access_setup(true);
201 sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, 0);
203 ret = sst_sound_set_email_alert(iface, "not_exist.mp3");
204 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
206 ret = sst_sound_set_email_alert(iface, ringtonePath);
207 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
209 ret = sst_sound_get_email_alert(iface, &getVal);
210 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
211 EXPECT_STREQ(ringtonePath, getVal);
216 TEST_F(SstSoundTest, setEmailAlertERR)
218 sst_interface *iface;
219 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &iface);
220 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
222 sstm_access_setup(true);
223 sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, -1);
224 ret = sst_sound_set_email_alert(iface, ringtonePath);
225 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
227 sstm_access_setup(false);
228 ret = sst_sound_set_email_alert(iface, ringtonePath);
229 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
230 sstm_access_setup(true);
233 TEST_F(SstSoundTest, setNotification)
236 sst_interface *iface;
237 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &iface);
238 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
240 sstm_access_setup(true);
241 sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, 0);
243 ret = sst_sound_set_notification(iface, "not_exist.mp3");
244 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
246 ret = sst_sound_set_notification(iface, ringtonePath);
247 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
249 ret = sst_vconf_get_str(iface, &getVal);
250 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
251 EXPECT_STREQ(ringtonePath, getVal);
256 TEST_F(SstSoundTest, setNotificationERR)
258 sst_interface *iface;
259 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &iface);
260 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
262 sstm_access_setup(true);
263 sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, -1);
264 ret = sst_sound_set_notification(iface, ringtonePath);
265 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
267 sstm_access_setup(false);
268 ret = sst_sound_set_notification(iface, ringtonePath);
269 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
270 sstm_access_setup(true);
273 TEST_F(SstSoundTest, getSlientMode)
276 sst_interface *iface;
277 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &iface);
278 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
280 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, false, 0);
281 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, false, 0);
283 ret = sst_sound_get_silent_mode(iface, &val);
284 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
287 TEST_F(SstSoundTest, getSlientModeERR)
290 sst_interface *iface;
291 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &iface);
292 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
294 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, false, 0);
295 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, false, -1);
296 ret = sst_sound_get_silent_mode(iface, &val);
297 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
299 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, false, -1);
300 ret = sst_sound_get_silent_mode(iface, &val);
301 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
304 TEST_F(SstSoundTest, setSlientMode)
308 sst_interface *iface;
309 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &iface);
310 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
312 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, false, 0);
313 sstm_vconf_get_bool_setup(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, false, 0);
315 ret = sst_sound_get_silent_mode(iface, &getVal);
316 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
319 ret = sst_sound_set_silent_mode(iface, setVal);
320 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
322 ret = sst_sound_get_silent_mode(iface, &getVal);
323 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
324 EXPECT_EQ(getVal, setVal);
326 ret = sst_sound_set_silent_mode(iface, !getVal);
327 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
330 TEST_F(SstSoundTest, setSlientModeERR)
332 sst_interface *iface;
333 int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &iface);
334 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
336 sstm_vconf_set_bool_setup(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 0);
337 sstm_vconf_set_bool_setup(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, -1);
338 ret = sst_sound_set_silent_mode(iface, true);
339 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
341 sstm_vconf_set_bool_setup(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, -1);
342 ret = sst_sound_set_silent_mode(iface, true);
343 EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);