1 /*
2 * Copyright (C) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "ringtone_default_settings_test.h"
17
18 #include <memory>
19
20 #include "ringtone_errno.h"
21 #define private public
22 #include "ringtone_default_setting.h"
23 #undef private
24 #include "ability_context_impl.h"
25 #include "rdb_store.h"
26 #include "rdb_utils.h"
27 #include "ringtone_rdbstore.h"
28
29 using namespace std;
30 using namespace OHOS;
31 using namespace testing::ext;
32
33 namespace OHOS {
34 namespace Media {
SetUpTestCase()35 void RingtoneDefaultSettingsTest::SetUpTestCase()
36 {
37 }
38
TearDownTestCase()39 void RingtoneDefaultSettingsTest::TearDownTestCase()
40 {
41 }
42
43 // SetUp:Execute before each test case
SetUp()44 void RingtoneDefaultSettingsTest::SetUp() {}
45
TearDown(void)46 void RingtoneDefaultSettingsTest::TearDown(void) {}
47
48 HWTEST_F(RingtoneDefaultSettingsTest, settings_ShotToneDefaultSettings_001, TestSize.Level0)
49 {
50 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
51 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
52 abilityContextImpl->SetStageContext(stageContext);
53 shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
54 int32_t ret = uniStore->Init();
55 EXPECT_EQ(ret, E_OK);
56 auto rawRdb = uniStore->GetRaw();
57 std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
58 system("param set const.multimedia.system_tone_sim_card_1 Betelgeuse.ogg");
59 system("param set const.multimedia.system_tone_sim_card_0 Bellatrix.ogg");
60 defaultSetting->ShotToneDefaultSettings();
61 Uri uri(RINGTONE_PATH_URI);
62 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
63 NativeRdb::ValuesBucket values;
64 const string name = "test_name";
65 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
66 const string data = ROOT_TONE_PRELOAD_PATH_OVERSEA_PATH + "rdbStore_Insert_test_001";
67 values.PutString(RINGTONE_COLUMN_DATA, data);
68 const string title = "insert test";
69 values.PutString(RINGTONE_COLUMN_TITLE, title);
70 values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
71 values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
72 cmd.SetValueBucket(values);
73 uniStore->Init();
74 int64_t rowId = E_HAS_DB_ERROR;
75 ret = uniStore->Insert(cmd, rowId);
76 EXPECT_EQ(ret, E_OK);
77 defaultSetting->ShotToneDefaultSettings();
78 system("param set const.multimedia.system_tone_sim_card_1 \"\"");
79 system("param set const.multimedia.system_tone_sim_card_0 \"\"");
80 defaultSetting->ShotToneDefaultSettings();
81 }
82
83 HWTEST_F(RingtoneDefaultSettingsTest, settings_NotificationToneDefaultSettings_001, TestSize.Level0)
84 {
85 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
86 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
87 abilityContextImpl->SetStageContext(stageContext);
88 shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
89 int32_t ret = uniStore->Init();
90 EXPECT_EQ(ret, E_OK);
91 auto rawRdb = uniStore->GetRaw();
92 std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
93 system("param set const.multimedia.notification_tone Bellatrix.ogg");
94 defaultSetting->NotificationToneDefaultSettings();
95 Uri uri(RINGTONE_PATH_URI);
96 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
97 NativeRdb::ValuesBucket values;
98 const string name = "test_name";
99 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
100 const string data = ROOT_TONE_PRELOAD_PATH_CHINA_PATH + "rdbStore_Insert_test_001";
101 values.PutString(RINGTONE_COLUMN_DATA, data);
102 const string title = "insert test";
103 values.PutString(RINGTONE_COLUMN_TITLE, title);
104 values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
105 values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
106 cmd.SetValueBucket(values);
107 uniStore->Init();
108 int64_t rowId = E_HAS_DB_ERROR;
109 ret = uniStore->Insert(cmd, rowId);
110 EXPECT_EQ(ret, E_OK);
111 defaultSetting->NotificationToneDefaultSettings();
112 system("param set const.multimedia.notification_tone \"\"");
113 defaultSetting->NotificationToneDefaultSettings();
114 }
115
116 HWTEST_F(RingtoneDefaultSettingsTest, settings_RingToneDefaultSettings_001, TestSize.Level0)
117 {
118 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
119 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
120 abilityContextImpl->SetStageContext(stageContext);
121 shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
122 int32_t ret = uniStore->Init();
123 EXPECT_EQ(ret, E_OK);
124 auto rawRdb = uniStore->GetRaw();
125 std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
126 system("param set const.multimedia.ringtone_sim_card_1 test_name");
127 system("param set const.multimedia.ringtone_sim_card_0 test_name");
128 defaultSetting->RingToneDefaultSettings();
129 Uri uri(RINGTONE_PATH_URI);
130 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
131 NativeRdb::ValuesBucket values;
132 const string name = "test_name";
133 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
134 const string data = ROOT_TONE_PRELOAD_PATH_NOAH_PATH + "rdbStore_Insert_test_001";
135 values.PutString(RINGTONE_COLUMN_DATA, data);
136 const string title = "insert test";
137 values.PutString(RINGTONE_COLUMN_TITLE, title);
138 values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
139 values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
140 cmd.SetValueBucket(values);
141 uniStore->Init();
142 int64_t rowId = E_HAS_DB_ERROR;
143 ret = uniStore->Insert(cmd, rowId);
144 EXPECT_EQ(ret, E_OK);
145 defaultSetting->RingToneDefaultSettings();
146 system("param set const.multimedia.ringtone_sim_card_1 \"\"");
147 system("param set const.multimedia.ringtone_sim_card_0 \"\"");
148 defaultSetting->RingToneDefaultSettings();
149 }
150
151 HWTEST_F(RingtoneDefaultSettingsTest, settings_GetTonePathByDisplayName_001, TestSize.Level0)
152 {
153 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
154 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
155 abilityContextImpl->SetStageContext(stageContext);
156 shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
157 int32_t ret = uniStore->Init();
158 EXPECT_EQ(ret, E_OK);
159 Uri uri(RINGTONE_PATH_URI);
160 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
161 NativeRdb::ValuesBucket values;
162 string name = "test_name";
163 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
164 const string data = "rdbStore_Insert_test_001";
165 values.PutString(RINGTONE_COLUMN_DATA, data);
166 const string title = "insert test";
167 values.PutString(RINGTONE_COLUMN_TITLE, title);
168 values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
169 values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
170 cmd.SetValueBucket(values);
171 uniStore->Init();
172 int64_t rowId = E_HAS_DB_ERROR;
173 ret = uniStore->Insert(cmd, rowId);
174 EXPECT_EQ(ret, E_OK);
175 auto rawRdb = uniStore->GetRaw();
176 std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
177 defaultSetting->GetTonePathByDisplayName(name);
178 }
179
180 HWTEST_F(RingtoneDefaultSettingsTest, settings_AlarmToneDefaultSettings_001, TestSize.Level0)
181 {
182 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
183 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
184 abilityContextImpl->SetStageContext(stageContext);
185 shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
186 int32_t ret = uniStore->Init();
187 EXPECT_EQ(ret, E_OK);
188 auto rawRdb = uniStore->GetRaw();
189 std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
190 system("param set const.multimedia.alarm_tone test_name");
191 defaultSetting->AlarmToneDefaultSettings();
192 Uri uri(RINGTONE_PATH_URI);
193 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
194 NativeRdb::ValuesBucket values;
195 const string name = "test_name";
196 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
197 const string data = ROOT_TONE_PRELOAD_PATH_NOAH_PATH + "rdbStore_Insert_test_001";
198 values.PutString(RINGTONE_COLUMN_DATA, data);
199 const string title = "insert test";
200 values.PutString(RINGTONE_COLUMN_TITLE, title);
201 values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
202 values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
203 cmd.SetValueBucket(values);
204 uniStore->Init();
205 int64_t rowId = E_HAS_DB_ERROR;
206 ret = uniStore->Insert(cmd, rowId);
207 EXPECT_EQ(ret, E_OK);
208 defaultSetting->AlarmToneDefaultSettings();
209 system("param set const.multimedia.alarm_tone Bellatrix.ogg");
210 defaultSetting->AlarmToneDefaultSettings();
211 }
212
213 /*
214 * Feature: Service
215 * Function: Test RingtoneDefaultSettings with GetTonePathByDisplayName
216 * SubFunction: NA
217 * FunctionPoints: NA
218 * EnvConditions: NA
219 * CaseDescription: Test GetTonePathByDisplayName for abnormal branches
220 */
221 HWTEST_F(RingtoneDefaultSettingsTest, settings_GetTonePathByDisplayName_002, TestSize.Level0)
222 {
223 auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
224 auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
225 ASSERT_NE(abilityContextImpl, nullptr);
226 abilityContextImpl->SetStageContext(stageContext);
227 shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
228 ASSERT_NE(uniStore, nullptr);
229 int32_t ret = uniStore->Init();
230 EXPECT_EQ(ret, E_OK);
231 Uri uri(RINGTONE_PATH_URI);
232 RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
233 NativeRdb::ValuesBucket values;
234 string name = "";
235 values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
236 const string data = "rdbStore_Insert_test_001";
237 values.PutString(RINGTONE_COLUMN_DATA, data);
238 const string title = "insert test";
239 values.PutString(RINGTONE_COLUMN_TITLE, title);
240 values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
241 values.Put(RINGTONE_COLUMN_MEDIA_TYPE, static_cast<int>(RINGTONE_MEDIA_TYPE_AUDIO));
242 cmd.SetValueBucket(values);
243 uniStore->Init();
244 int64_t rowId = E_HAS_DB_ERROR;
245 ret = uniStore->Insert(cmd, rowId);
246 EXPECT_EQ(ret, E_OK);
247 auto rawRdb = uniStore->GetRaw();
248 std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
249 ASSERT_NE(defaultSetting, nullptr);
250 defaultSetting->GetTonePathByDisplayName(name);
251 }
252 } // namespace Media
253 } // namespace OHOS