Add xmlSaveFormatFile() check routine
[platform/core/api/system-settings.git] / tests / sst_gtest_normal_sound.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include <string.h>
18 #include <glib.h>
19 #include <gtest/gtest.h>
20 #include <vconf.h>
21
22 #include "system_settings.h"
23 #include "mocks/sstt_mock.h"
24
25 extern "C" {
26 #include "sst.h"
27 #include "sst_sound.h"
28 #include "sst_vconf.h"
29 #include "sst_interface.h"
30 }
31
32 class SstSoundTest : public ::testing::Test {
33 protected:
34         void SetUp() override
35         {
36                 loop = g_main_loop_new(NULL, FALSE);
37         }
38
39         void TearDown() override
40         {
41                 g_main_loop_unref(loop);
42                 loop = NULL;
43         }
44
45         static bool ringtoneListCallback(int index, const char *data, void *user_data)
46         {
47                 INFO("filename(%s)", data);
48                 int *ringtone_num = (int*)user_data;
49                 *ringtone_num += 1;
50                 return true;
51         }
52
53         static gboolean checkRingtoneIdle(gpointer data)
54         {
55                 int ringtone_num = 0;
56                 int cur_cnt = 0;
57                 int ret = sst_sound_get_call_ringtone_list(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, ringtoneListCallback, &cur_cnt);
58
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);
62                 }
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);
65
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);
69                 }
70                 EXPECT_EQ(ringtone_num - cur_cnt, ringtoneFilesCnt);
71                 g_main_loop_quit(loop);
72                 return G_SOURCE_REMOVE;
73         }
74         static GMainLoop *loop;
75         static const char *ringtonePath;
76         static int ringtoneFilesCnt;
77         static const char *ringtoneFiles[];
78 };
79
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"
87 };
88 int SstSoundTest::ringtoneFilesCnt = sizeof(ringtoneFiles)/sizeof(const char*);
89 GMainLoop *SstSoundTest::loop = NULL;
90
91 TEST_F(SstSoundTest, getCallRingtone)
92 {
93         char *val = NULL;
94         sst_interface *iface;
95         int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &iface);
96         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
97
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);
101         free(val);
102 }
103
104 TEST_F(SstSoundTest, getCallRingtoneERR)
105 {
106         char *val = NULL;
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);
110
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);
114 }
115
116 TEST_F(SstSoundTest, setCallRingtone)
117 {
118         char *getVal = NULL;
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);
122
123         sstm_access_setup(true);
124         sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, 0);
125
126         ret = sst_sound_set_call_ringtone(iface, "not_exist.mp3");
127         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
128
129         ret = sst_sound_set_call_ringtone(iface, ringtonePath);
130         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
131
132         ret = sst_sound_get_call_ringtone(iface, &getVal);
133         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
134         EXPECT_STREQ(ringtonePath, getVal);
135
136         free(getVal);
137 }
138
139 TEST_F(SstSoundTest, setCallRingtoneERR)
140 {
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);
144
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);
149 }
150
151 TEST_F(SstSoundTest, addDelGetRingtone)
152 {
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);
157 }
158
159
160 TEST_F(SstSoundTest, getEmailAlert)
161 {
162         char *val = NULL;
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);
166
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);
169
170         ret = sst_sound_get_email_alert(iface, &val);
171         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
172         free(val);
173
174         sstm_vconf_get_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, ringtonePath, 0);
175
176         ret = sst_sound_get_email_alert(iface, &val);
177         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
178         free(val);
179 }
180
181 TEST_F(SstSoundTest, getEmailAlertERR)
182 {
183         char *val = NULL;
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);
187
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);
191 }
192
193 TEST_F(SstSoundTest, setEmailAlert)
194 {
195         char *getVal = NULL;
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);
199
200         sstm_access_setup(true);
201         sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, 0);
202
203         ret = sst_sound_set_email_alert(iface, "not_exist.mp3");
204         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, ret);
205
206         ret = sst_sound_set_email_alert(iface, ringtonePath);
207         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
208
209         ret = sst_sound_get_email_alert(iface, &getVal);
210         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
211         EXPECT_STREQ(ringtonePath, getVal);
212
213         free(getVal);
214 }
215
216 TEST_F(SstSoundTest, setEmailAlertERR)
217 {
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);
221
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);
226
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);
231 }
232
233 TEST_F(SstSoundTest, setNotification)
234 {
235         char *getVal = NULL;
236         sst_interface *iface;
237         int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &iface);
238         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
239
240         sstm_access_setup(true);
241         sstm_vconf_set_str_setup(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, 0);
242
243         ret = sst_sound_set_notification(iface, "not_exist.mp3");
244         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_IO_ERROR, ret);
245
246         ret = sst_sound_set_notification(iface, ringtonePath);
247         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
248
249         ret = sst_vconf_get_str(iface, &getVal);
250         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
251         EXPECT_STREQ(ringtonePath, getVal);
252
253         free(getVal);
254 }
255
256 TEST_F(SstSoundTest, setNotificationERR)
257 {
258         sst_interface *iface;
259         int ret = sst_get_interface(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &iface);
260         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
261
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);
266
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);
271 }
272
273 TEST_F(SstSoundTest, getSlientMode)
274 {
275         bool val = false;
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);
279
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);
282
283         ret = sst_sound_get_silent_mode(iface, &val);
284         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
285 }
286
287 TEST_F(SstSoundTest, getSlientModeERR)
288 {
289         bool val;
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);
293
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);
298
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);
302 }
303
304 TEST_F(SstSoundTest, setSlientMode)
305 {
306         bool getVal;
307         bool setVal;
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);
311
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);
314
315         ret = sst_sound_get_silent_mode(iface, &getVal);
316         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
317         setVal = !getVal;
318
319         ret = sst_sound_set_silent_mode(iface, setVal);
320         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
321
322         ret = sst_sound_get_silent_mode(iface, &getVal);
323         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
324         EXPECT_EQ(getVal, setVal);
325
326         ret = sst_sound_set_silent_mode(iface, !getVal);
327         EXPECT_EQ(SYSTEM_SETTINGS_ERROR_NONE, ret);
328 }
329
330 TEST_F(SstSoundTest, setSlientModeERR)
331 {
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);
335
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);
340
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);
344 }