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 #define LOG_TAG "SystemDefinedAppitemTest"
16 
17 #include <unistd.h>
18 #include <gtest/gtest.h>
19 #include <string>
20 
21 #include "logger.h"
22 #include "system_defined_appitem.h"
23 #include "udmf_capi_common.h"
24 
25 using namespace testing::ext;
26 using namespace OHOS::UDMF;
27 using namespace OHOS;
28 namespace OHOS::Test {
29 using namespace std;
30 
31 class SystemDefinedAppitemTest : public testing::Test {
32 public:
33     static void SetUpTestCase();
34     static void TearDownTestCase();
35     void SetUp() override;
36     void TearDown() override;
37 };
38 
SetUpTestCase()39 void SystemDefinedAppitemTest::SetUpTestCase()
40 {
41 }
42 
TearDownTestCase()43 void SystemDefinedAppitemTest::TearDownTestCase()
44 {
45 }
46 
SetUp()47 void SystemDefinedAppitemTest::SetUp()
48 {
49 }
50 
TearDown()51 void SystemDefinedAppitemTest::TearDown()
52 {
53 }
54 
55 /**
56 * @tc.name: SetItems001
57 * @tc.desc: Normal testcase of SetItems
58 * @tc.type: FUNC
59 */
60 HWTEST_F(SystemDefinedAppitemTest, SetItems001, TestSize.Level1)
61 {
62     LOG_INFO(UDMF_TEST, "SetItems001 begin.");
63     SystemDefinedAppItem systemDefinedAppItem;
64     UDDetails details;
65     details.insert({ "string", "" });
66     systemDefinedAppItem.SetItems(details);
67     systemDefinedAppItem.InitObject();
68     auto object = std::get<std::shared_ptr<Object>>(systemDefinedAppItem.value_);
69     EXPECT_EQ(std::get<std::string>(object->value_[UNIFORM_DATA_TYPE]), "openharmony.app-item");
70     LOG_INFO(UDMF_TEST, "SetItems001 end.");
71 }
72 
73 /**
74 * @tc.name: SetItems002
75 * @tc.desc: Normal testcase of SetItems
76 * @tc.type: FUNC
77 */
78 HWTEST_F(SystemDefinedAppitemTest, SetItems002, TestSize.Level1)
79 {
80     LOG_INFO(UDMF_TEST, "SetItems002 begin.");
81     UDDetails details;
82     details.insert({ APP_ID, "SetItems002" });
83     SystemDefinedAppItem systemDefinedAppItem;
84     systemDefinedAppItem.SetItems(details);
85     EXPECT_EQ(systemDefinedAppItem.appId_, "SetItems002");
86     LOG_INFO(UDMF_TEST, "SetItems002 end.");
87 }
88 
89 /**
90 * @tc.name: SetItems003
91 * @tc.desc: Normal testcase of SetItems
92 * @tc.type: FUNC
93 */
94 HWTEST_F(SystemDefinedAppitemTest, SetItems003, TestSize.Level1)
95 {
96     LOG_INFO(UDMF_TEST, "SetItems003 begin.");
97     UDDetails details;
98     details.insert({ APP_NAME, "SetItems003" });
99     SystemDefinedAppItem systemDefinedAppItem;
100     systemDefinedAppItem.SetItems(details);
101     EXPECT_EQ(systemDefinedAppItem.appName_, "SetItems003");
102     LOG_INFO(UDMF_TEST, "SetItems003 end.");
103 }
104 
105 /**
106 * @tc.name: SetItems004
107 * @tc.desc: Normal testcase of SetItems
108 * @tc.type: FUNC
109 */
110 HWTEST_F(SystemDefinedAppitemTest, SetItems004, TestSize.Level1)
111 {
112     LOG_INFO(UDMF_TEST, "SetItems004 begin.");
113     UDDetails details;
114     details.insert({ APP_ICON_ID, "SetItems004" });
115     SystemDefinedAppItem systemDefinedAppItem;
116     systemDefinedAppItem.SetItems(details);
117     EXPECT_EQ(systemDefinedAppItem.appIconId_, "SetItems004");
118     LOG_INFO(UDMF_TEST, "SetItems004 end.");
119 }
120 
121 /**
122 * @tc.name: SetItems005
123 * @tc.desc: Normal testcase of SetItems
124 * @tc.type: FUNC
125 */
126 HWTEST_F(SystemDefinedAppitemTest, SetItems005, TestSize.Level1)
127 {
128     LOG_INFO(UDMF_TEST, "SetItems005 begin.");
129     UDDetails details;
130     details.insert({APP_LABEL_ID, "SetItems005" });
131     SystemDefinedAppItem systemDefinedAppItem;
132     systemDefinedAppItem.SetItems(details);
133     EXPECT_EQ(systemDefinedAppItem.appLabelId_, "SetItems005");
134     LOG_INFO(UDMF_TEST, "SetItems005 end.");
135 }
136 
137 /**
138 * @tc.name: SetItems006
139 * @tc.desc: Normal testcase of SetItems
140 * @tc.type: FUNC
141 */
142 HWTEST_F(SystemDefinedAppitemTest, SetItems006, TestSize.Level1)
143 {
144     LOG_INFO(UDMF_TEST, "SetItems006 begin.");
145     UDDetails details;
146     details.insert({ BUNDLE_NAME, "SetItems006" });
147     SystemDefinedAppItem systemDefinedAppItem;
148     systemDefinedAppItem.SetItems(details);
149     EXPECT_EQ(systemDefinedAppItem.bundleName_, "SetItems006");
150     LOG_INFO(UDMF_TEST, "SetItems006 end.");
151 }
152 
153 /**
154 * @tc.name: SetItems007
155 * @tc.desc: Normal testcase of SetItems
156 * @tc.type: FUNC
157 */
158 HWTEST_F(SystemDefinedAppitemTest, SetItems007, TestSize.Level1)
159 {
160     LOG_INFO(UDMF_TEST, "SetItems007 begin.");
161     UDDetails details;
162     details.insert({ ABILITY_NAME, "SetItems007" });
163     SystemDefinedAppItem systemDefinedAppItem;
164     systemDefinedAppItem.SetItems(details);
165     EXPECT_EQ(systemDefinedAppItem.abilityName_, "SetItems007");
166     LOG_INFO(UDMF_TEST, "SetItems007 end.");
167 }
168 
169 /**
170 * @tc.name: GetItems001
171 * @tc.desc: Normal testcase of GetItems
172 * @tc.type: FUNC
173 */
174 HWTEST_F(SystemDefinedAppitemTest, GetItems001, TestSize.Level1)
175 {
176     LOG_INFO(UDMF_TEST, "GetItems001 begin.");
177     SystemDefinedAppItem valueType;
178     valueType.appId_ = "appId";
179     valueType.appName_ = "appName_";
180     valueType.appIconId_ = "appIconId";
181     valueType.appLabelId_ = "appLabelId";
182     valueType.bundleName_ = "bundleName";
183     valueType.abilityName_ = "abilityName";
184     UDDetails items = valueType.GetItems();
185     EXPECT_EQ(std::get<std::string>(items[APP_ID]), valueType.appId_);
186     EXPECT_EQ(std::get<std::string>(items[APP_NAME]), valueType.appName_);
187     EXPECT_EQ(std::get<std::string>(items[APP_ICON_ID]), valueType.appIconId_);
188     EXPECT_EQ(std::get<std::string>(items[APP_LABEL_ID]), valueType.appLabelId_);
189     EXPECT_EQ(std::get<std::string>(items[BUNDLE_NAME]), valueType.bundleName_);
190     EXPECT_EQ(std::get<std::string>(items[ABILITY_NAME]), valueType.abilityName_);
191     LOG_INFO(UDMF_TEST, "GetItems001 end.");
192 }
193 
194 /**
195 * @tc.name: GetValue001
196 * @tc.desc: Normal testcase of GetValue
197 * @tc.type: FUNC
198 */
199 HWTEST_F(SystemDefinedAppitemTest, GetValue001, TestSize.Level1)
200 {
201     LOG_INFO(UDMF_TEST, "GetValue001 begin.");
202     SystemDefinedAppItem valueType;
203     valueType.value_ = std::monostate{};
204     valueType.appId_ = "appId";
205     valueType.appName_ = "appName_";
206     valueType.appIconId_ = "appIconId";
207     valueType.appLabelId_ = "appLabelId";
208     valueType.bundleName_ = "bundleName";
209     valueType.abilityName_ = "abilityName";
210     valueType.InitObject();
211     auto object = std::get<std::shared_ptr<Object>>(valueType.value_);
212     auto details = std::get<std::shared_ptr<Object>>(object->value_[DETAILS]);
213     EXPECT_EQ(std::get<std::string>(object->value_[UNIFORM_DATA_TYPE]), "openharmony.app-item");
214     EXPECT_EQ(std::get<std::string>(object->value_[APP_ID]), valueType.appId_);
215     EXPECT_EQ(std::get<std::string>(object->value_[APP_NAME]), valueType.appName_);
216     EXPECT_EQ(std::get<std::string>(object->value_[APP_ICON_ID]), valueType.appIconId_);
217     EXPECT_EQ(std::get<std::string>(object->value_[APP_LABEL_ID]), valueType.appLabelId_);
218     EXPECT_EQ(std::get<std::string>(object->value_[BUNDLE_NAME]), valueType.bundleName_);
219     EXPECT_EQ(std::get<std::string>(object->value_[ABILITY_NAME]), valueType.abilityName_);
220     EXPECT_EQ(details->value_.size(), 0);
221     LOG_INFO(UDMF_TEST, "GetValue001 end.");
222 }
223 } // OHOS::Test