1 /*
2 * Copyright (c) 2021-2023 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 <gtest/gtest.h>
17 #include "base_def.h"
18 #include "base_obj.h"
19 #include "bool_wrapper.h"
20 #include "zchar_wrapper.h"
21 #include "byte_wrapper.h"
22 #include "user_object_wrapper.h"
23 #include "short_wrapper.h"
24 #include "int_wrapper.h"
25 #include "long_wrapper.h"
26 #include "float_wrapper.h"
27 #include "double_wrapper.h"
28 #include "string_wrapper.h"
29 #include "refbase.h"
30
31 using namespace OHOS;
32 using namespace OHOS::AAFwk;
33 using testing::ext::TestSize;
34
35 namespace OHOS {
36 namespace AAFwk {
37 class AAFwkBaseObjectTest : public testing::Test {
38 public:
39 static void SetUpTestCase(void);
40 static void TearDownTestCase(void);
41 void SetUp();
42 void TearDown();
43 };
44
SetUpTestCase(void)45 void AAFwkBaseObjectTest::SetUpTestCase(void)
46 {}
47
TearDownTestCase(void)48 void AAFwkBaseObjectTest::TearDownTestCase(void)
49 {}
50
SetUp(void)51 void AAFwkBaseObjectTest::SetUp(void)
52 {}
53
TearDown(void)54 void AAFwkBaseObjectTest::TearDown(void)
55 {}
56
57 /**
58 * @tc.number: BaseObject_test_001
59 * @tc.name: Query
60 * @tc.desc: test Query function and iid == g_IID_IWeakReferenceSource.
61 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_001, TestSize.Level1)62 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_001, TestSize.Level1)
63 {
64 Object object;
65 InterfaceID iid = {
66 0xbc3f5250, 0x34d7, 0x42d2, 0x9b40, {0xf, 0xf, 0xc, 0xe, 0x8, 0x3, 0xf, 0xd, 0x4, 0x0, 0x6, 0x1}
67 };
68 EXPECT_TRUE(object.Query(iid));
69 }
70
71 /**
72 * @tc.number: BaseObject_test_002
73 * @tc.name: Query
74 * @tc.desc: test Query function and iid == g_IID_IInterface.
75 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_002, TestSize.Level1)76 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_002, TestSize.Level1)
77 {
78 Object object;
79 InterfaceID iid = {
80 0x00000000, 0x0000, 0x0000, 0x0000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1}
81 };
82 EXPECT_TRUE(object.Query(iid));
83 }
84
85 /**
86 * @tc.number: BaseObject_test_003
87 * @tc.name: GetInterfaceID
88 * @tc.desc: test GetInterfaceID function and object == static_cast<IObject *>(this).
89 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_003, TestSize.Level1)90 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_003, TestSize.Level1)
91 {
92 Object object;
93 InterfaceID iid = {
94 0x8321f710, 0xa0c0, 0x4cbe, 0xbfbc, {0x5, 0xa, 0x7, 0x8, 0xf, 0x1, 0x3, 0x1, 0x2, 0xb, 0x1, 0xb}
95 };
96 EXPECT_EQ(iid, object.GetInterfaceID(object.Query(iid)));
97 }
98
99 /**
100 * @tc.number: BaseObject_test_004
101 * @tc.name: GetInterfaceID
102 * @tc.desc: test GetInterfaceID function and object == static_cast<IWeakReferenceSource *>(this).
103 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_004, TestSize.Level1)104 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_004, TestSize.Level1)
105 {
106 Object object;
107 InterfaceID iid = {
108 0xbc3f5250, 0x34d7, 0x42d2, 0x9b40, {0xf, 0xf, 0xc, 0xe, 0x8, 0x3, 0xf, 0xd, 0x4, 0x0, 0x6, 0x1}
109 };
110 EXPECT_EQ(iid, object.GetInterfaceID(object.Query(iid)));
111 }
112
113 /**
114 * @tc.number: BaseObject_test_005
115 * @tc.name: GetInterfaceID
116 * @tc.desc: test GetInterfaceID function and object is Any value.
117 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_005, TestSize.Level1)118 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_005, TestSize.Level1)
119 {
120 Object object;
121 InterfaceID iid = {
122 0x26ab1978, 0x1d11, 0x4a4f, 0x826d, {0x6, 0x1, 0x7, 0x8, 0x5, 0xc, 0x0, 0x4, 0x8, 0xc, 0xc, 0xa}
123 };
124 EXPECT_EQ(InterfaceID::Empty, object.GetInterfaceID(object.Query(iid)));
125 }
126
127
128 /**
129 * @tc.number: BaseObject_test_006
130 * @tc.name: GetWeakReference
131 * @tc.desc: test GetWeakReference function and addr is not nullptr.
132 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_006, TestSize.Level1)133 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_006, TestSize.Level1)
134 {
135 Object object;
136 sptr<IWeakReference> weakRef = nullptr;
137 EXPECT_EQ(ERR_OK, object.GetWeakReference(weakRef));
138 }
139
140 /**
141 * @tc.number: BaseObject_test_007
142 * @tc.name: ToString
143 * @tc.desc: test ToString function.
144 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_007, TestSize.Level1)145 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_007, TestSize.Level1)
146 {
147 std::shared_ptr<Object> object = std::make_shared<Object>();
148 ASSERT_NE(nullptr, object);
149 object->ToString();
150 }
151
152 /**
153 * @tc.number: BaseObject_test_008
154 * @tc.name: GetClassID
155 * @tc.desc: test GetInterfaceID function and object is Any value.
156 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_008, TestSize.Level1)157 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_008, TestSize.Level1)
158 {
159 Object object;
160 EXPECT_EQ(ClassID::Empty, object.GetClassID());
161 }
162
163 /**
164 * @tc.number: BaseObject_test_009
165 * @tc.name: GetHashCode
166 * @tc.desc: test GetInterfaceID function and object is Any value.
167 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_009, TestSize.Level1)168 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_009, TestSize.Level1)
169 {
170 std::shared_ptr<Object> object = std::make_shared<Object>();
171 Object object1;
172 InterfaceID iid = {
173 0x8321f710, 0xa0c0, 0x4cbe, 0xbfbc, {0x5, 0xa, 0x7, 0x8, 0xf, 0x1, 0x3, 0x1, 0x2, 0xb, 0x1, 0xb}
174 };
175 Object object2;
176 EXPECT_EQ(false, object->Equals(*(object1.Query(iid)), *(object2.Query(iid))));
177 }
178
179 /**
180 * @tc.number: BaseObject_test_010
181 * @tc.name: GetHashCode
182 * @tc.desc: test GetInterfaceID function and object is Any value.
183 */
HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_010, TestSize.Level1)184 HWTEST_F(AAFwkBaseObjectTest, BaseObject_test_010, TestSize.Level1)
185 {
186 std::shared_ptr<Object> object = std::make_shared<Object>();
187 Object object1;
188 InterfaceID iid = {
189 0x8321f710, 0xa0c0, 0x4cbe, 0xbfbc, {0x5, 0xa, 0x7, 0x8, 0xf, 0x1, 0x3, 0x1, 0x2, 0xb, 0x1, 0xb}
190 };
191 EXPECT_EQ(true, object->Equals(*(object1.Query(iid)), *(object1.Query(iid))));
192 }
193
194 /**
195 * @tc.number: UserObject_test_001
196 * @tc.name: ToString
197 * @tc.desc: test ToString function and value_ is nullptr.
198 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_001, TestSize.Level1)199 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_001, TestSize.Level1)
200 {
201 UserObject userObject(nullptr);
202 EXPECT_EQ("", userObject.ToString());
203 }
204
205 /**
206 * @tc.number: UserObject_test_002
207 * @tc.name: Box
208 * @tc.desc: test Box function and value is nullptr.
209 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_002, TestSize.Level1)210 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_002, TestSize.Level1)
211 {
212 UserObject userObject(nullptr);
213 EXPECT_EQ(nullptr, userObject.Box(nullptr));
214 }
215
216 /**
217 * @tc.number: UserObject_test_003
218 * @tc.name: Unbox
219 * @tc.desc: test Unbox function and object is nullptr.
220 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_003, TestSize.Level1)221 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_003, TestSize.Level1)
222 {
223 UserObject userObject(nullptr);
224 EXPECT_EQ(nullptr, userObject.Unbox(nullptr));
225 }
226
227 /**
228 * @tc.number: UserObject_test_004
229 * @tc.name: Parse
230 * @tc.desc: test Parse function and str is empty.
231 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_004, TestSize.Level1)232 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_004, TestSize.Level1)
233 {
234 UserObject userObject(nullptr);
235 std::string str = "";
236 EXPECT_EQ(nullptr, userObject.Parse(str));
237 }
238
239 /**
240 * @tc.number: UserObject_test_005
241 * @tc.name: Parse
242 * @tc.desc: test Parse function and SPLIT is does not exist.
243 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_005, TestSize.Level1)244 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_005, TestSize.Level1)
245 {
246 UserObject userObject(nullptr);
247 std::string str = "acd";
248 EXPECT_EQ(nullptr, userObject.Parse(str));
249 }
250
251 /**
252 * @tc.number: UserObject_test_006
253 * @tc.name: Parse
254 * @tc.desc: test Parse function and SPLIT is exist.
255 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_006, TestSize.Level1)256 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_006, TestSize.Level1)
257 {
258 UserObject userObject(nullptr);
259 std::string str = "a#cd";
260 EXPECT_EQ(nullptr, userObject.Parse(str));
261 }
262
263 /**
264 * @tc.number: UserObject_test_007
265 * @tc.name: Parse
266 * @tc.desc: test Parse function and str == "true".
267 */
HWTEST_F(AAFwkBaseObjectTest, UserObject_test_007, TestSize.Level1)268 HWTEST_F(AAFwkBaseObjectTest, UserObject_test_007, TestSize.Level1)
269 {
270 Boolean boolean(true);
271 std::string str = "true";
272 boolean.Parse(str);
273 EXPECT_EQ("true", boolean.ToString());
274 }
275 } // namespace AAFwk
276 } // namespace OHOS
277