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