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 31using namespace OHOS; 32using namespace OHOS::AAFwk; 33using testing::ext::TestSize; 34 35namespace OHOS { 36namespace AAFwk { 37class AAFwkBaseObjectTest : public testing::Test { 38public: 39 static void SetUpTestCase(void); 40 static void TearDownTestCase(void); 41 void SetUp(); 42 void TearDown(); 43}; 44 45void AAFwkBaseObjectTest::SetUpTestCase(void) 46{} 47 48void AAFwkBaseObjectTest::TearDownTestCase(void) 49{} 50 51void AAFwkBaseObjectTest::SetUp(void) 52{} 53 54void 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 */ 62HWTEST_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 */ 76HWTEST_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 */ 90HWTEST_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 */ 104HWTEST_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 */ 118HWTEST_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 */ 133HWTEST_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 */ 145HWTEST_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 */ 157HWTEST_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 */ 168HWTEST_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 */ 184HWTEST_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 */ 199HWTEST_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 */ 210HWTEST_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 */ 221HWTEST_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 */ 232HWTEST_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 */ 244HWTEST_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 */ 256HWTEST_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 */ 268HWTEST_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