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     cmd.SetValueBucket(values);
72     uniStore->Init();
73     int64_t rowId = E_HAS_DB_ERROR;
74     ret = uniStore->Insert(cmd, rowId);
75     EXPECT_EQ(ret, E_OK);
76     defaultSetting->ShotToneDefaultSettings();
77     system("param set const.multimedia.system_tone_sim_card_1 \"\"");
78     system("param set const.multimedia.system_tone_sim_card_0 \"\"");
79     defaultSetting->ShotToneDefaultSettings();
80 }
81 
82 HWTEST_F(RingtoneDefaultSettingsTest, settings_NotificationToneDefaultSettings_001, TestSize.Level0)
83 {
84     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
85     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
86     abilityContextImpl->SetStageContext(stageContext);
87     shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
88     int32_t ret = uniStore->Init();
89     EXPECT_EQ(ret, E_OK);
90     auto rawRdb = uniStore->GetRaw();
91     std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
92     system("param set const.multimedia.notification_tone Bellatrix.ogg");
93     defaultSetting->NotificationToneDefaultSettings();
94     Uri uri(RINGTONE_PATH_URI);
95     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
96     NativeRdb::ValuesBucket values;
97     const string name = "test_name";
98     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
99     const string data = ROOT_TONE_PRELOAD_PATH_CHINA_PATH + "rdbStore_Insert_test_001";
100     values.PutString(RINGTONE_COLUMN_DATA, data);
101     const string title = "insert test";
102     values.PutString(RINGTONE_COLUMN_TITLE, title);
103     values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
104     cmd.SetValueBucket(values);
105     uniStore->Init();
106     int64_t rowId = E_HAS_DB_ERROR;
107     ret = uniStore->Insert(cmd, rowId);
108     EXPECT_EQ(ret, E_OK);
109     defaultSetting->NotificationToneDefaultSettings();
110     system("param set const.multimedia.notification_tone \"\"");
111     defaultSetting->NotificationToneDefaultSettings();
112 }
113 
114 HWTEST_F(RingtoneDefaultSettingsTest, settings_RingToneDefaultSettings_001, TestSize.Level0)
115 {
116     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
117     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
118     abilityContextImpl->SetStageContext(stageContext);
119     shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
120     int32_t ret = uniStore->Init();
121     EXPECT_EQ(ret, E_OK);
122     auto rawRdb = uniStore->GetRaw();
123     std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
124     system("param set const.multimedia.ringtone_sim_card_1 test_name");
125     system("param set const.multimedia.ringtone_sim_card_0 test_name");
126     defaultSetting->RingToneDefaultSettings();
127     Uri uri(RINGTONE_PATH_URI);
128     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
129     NativeRdb::ValuesBucket values;
130     const string name = "test_name";
131     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
132     const string data = ROOT_TONE_PRELOAD_PATH_NOAH_PATH + "rdbStore_Insert_test_001";
133     values.PutString(RINGTONE_COLUMN_DATA, data);
134     const string title = "insert test";
135     values.PutString(RINGTONE_COLUMN_TITLE, title);
136     values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
137     cmd.SetValueBucket(values);
138     uniStore->Init();
139     int64_t rowId = E_HAS_DB_ERROR;
140     ret = uniStore->Insert(cmd, rowId);
141     EXPECT_EQ(ret, E_OK);
142     defaultSetting->RingToneDefaultSettings();
143     system("param set const.multimedia.ringtone_sim_card_1 \"\"");
144     system("param set const.multimedia.ringtone_sim_card_0 \"\"");
145     defaultSetting->RingToneDefaultSettings();
146 }
147 
148 HWTEST_F(RingtoneDefaultSettingsTest, settings_GetTonePathByDisplayName_001, TestSize.Level0)
149 {
150     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
151     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
152     abilityContextImpl->SetStageContext(stageContext);
153     shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
154     int32_t ret = uniStore->Init();
155     EXPECT_EQ(ret, E_OK);
156     Uri uri(RINGTONE_PATH_URI);
157     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
158     NativeRdb::ValuesBucket values;
159     string name = "test_name";
160     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
161     const string data = "rdbStore_Insert_test_001";
162     values.PutString(RINGTONE_COLUMN_DATA, data);
163     const string title = "insert test";
164     values.PutString(RINGTONE_COLUMN_TITLE, title);
165     values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
166     cmd.SetValueBucket(values);
167     uniStore->Init();
168     int64_t rowId = E_HAS_DB_ERROR;
169     ret = uniStore->Insert(cmd, rowId);
170     EXPECT_EQ(ret, E_OK);
171     auto rawRdb = uniStore->GetRaw();
172     std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
173     defaultSetting->GetTonePathByDisplayName(name);
174 }
175 
176 HWTEST_F(RingtoneDefaultSettingsTest, settings_AlarmToneDefaultSettings_001, TestSize.Level0)
177 {
178     auto stageContext = std::make_shared<AbilityRuntime::ContextImpl>();
179     auto abilityContextImpl = std::make_shared<OHOS::AbilityRuntime::AbilityContextImpl>();
180     abilityContextImpl->SetStageContext(stageContext);
181     shared_ptr<RingtoneUnistore> uniStore = RingtoneRdbStore::GetInstance(abilityContextImpl);
182     int32_t ret = uniStore->Init();
183     EXPECT_EQ(ret, E_OK);
184     auto rawRdb = uniStore->GetRaw();
185     std::unique_ptr<RingtoneDefaultSetting> defaultSetting = RingtoneDefaultSetting::GetObj(rawRdb);
186     system("param set const.multimedia.alarm_tone test_name");
187     defaultSetting->AlarmToneDefaultSettings();
188     Uri uri(RINGTONE_PATH_URI);
189     RingtoneDataCommand cmd(uri, RINGTONE_TABLE, RingtoneOperationType::INSERT);
190     NativeRdb::ValuesBucket values;
191     const string name = "test_name";
192     values.PutString(RINGTONE_COLUMN_DISPLAY_NAME, name);
193     const string data = ROOT_TONE_PRELOAD_PATH_NOAH_PATH + "rdbStore_Insert_test_001";
194     values.PutString(RINGTONE_COLUMN_DATA, data);
195     const string title = "insert test";
196     values.PutString(RINGTONE_COLUMN_TITLE, title);
197     values.Put(RINGTONE_COLUMN_RING_TONE_SOURCE_TYPE, static_cast<int>(1));
198     cmd.SetValueBucket(values);
199     uniStore->Init();
200     int64_t rowId = E_HAS_DB_ERROR;
201     ret = uniStore->Insert(cmd, rowId);
202     EXPECT_EQ(ret, E_OK);
203     defaultSetting->AlarmToneDefaultSettings();
204     system("param set const.multimedia.alarm_tone Bellatrix.ogg");
205     defaultSetting->AlarmToneDefaultSettings();
206 }
207 } // namespace Media
208 } // namespace OHOS