18bf80f4bSopenharmony_ci/* 28bf80f4bSopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd. 38bf80f4bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 48bf80f4bSopenharmony_ci * you may not use this file except in compliance with the License. 58bf80f4bSopenharmony_ci * You may obtain a copy of the License at 68bf80f4bSopenharmony_ci * 78bf80f4bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 88bf80f4bSopenharmony_ci * 98bf80f4bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 108bf80f4bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 118bf80f4bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128bf80f4bSopenharmony_ci * See the License for the specific language governing permissions and 138bf80f4bSopenharmony_ci * limitations under the License. 148bf80f4bSopenharmony_ci */ 158bf80f4bSopenharmony_ci 168bf80f4bSopenharmony_ci#include <gmock/gmock-matchers.h> 178bf80f4bSopenharmony_ci#include <gtest/gtest.h> 188bf80f4bSopenharmony_ci 198bf80f4bSopenharmony_ci#include <meta/api/object.h> 208bf80f4bSopenharmony_ci 218bf80f4bSopenharmony_ci#include "src/test_runner.h" 228bf80f4bSopenharmony_ci#include "src/testing_objects.h" 238bf80f4bSopenharmony_ci 248bf80f4bSopenharmony_ciusing namespace testing::ext; 258bf80f4bSopenharmony_ci 268bf80f4bSopenharmony_ciMETA_BEGIN_NAMESPACE() 278bf80f4bSopenharmony_ci 288bf80f4bSopenharmony_ciclass ObjectTest : public testing::Test { 298bf80f4bSopenharmony_cipublic: 308bf80f4bSopenharmony_ci static void SetUpTestSuite() 318bf80f4bSopenharmony_ci { 328bf80f4bSopenharmony_ci SetTest(); 338bf80f4bSopenharmony_ci } 348bf80f4bSopenharmony_ci static void TearDownTestSuite() 358bf80f4bSopenharmony_ci { 368bf80f4bSopenharmony_ci ResetTest(); 378bf80f4bSopenharmony_ci } 388bf80f4bSopenharmony_ci void SetUp() override {} 398bf80f4bSopenharmony_ci void TearDown() override {} 408bf80f4bSopenharmony_ci}; 418bf80f4bSopenharmony_ci 428bf80f4bSopenharmony_ci/** 438bf80f4bSopenharmony_ci * @tc.name: ObjectTest 448bf80f4bSopenharmony_ci * @tc.desc: test ObjectBaseAPI function 458bf80f4bSopenharmony_ci * @tc.type: FUNC 468bf80f4bSopenharmony_ci * @tc.require: I7DMS1 478bf80f4bSopenharmony_ci */ 488bf80f4bSopenharmony_ciHWTEST_F(ObjectTest, ObjectBaseAPI, TestSize.Level1) 498bf80f4bSopenharmony_ci{ 508bf80f4bSopenharmony_ci META_NS::Object object; 518bf80f4bSopenharmony_ci 528bf80f4bSopenharmony_ci EXPECT_NE(object.GetIObject(), nullptr); 538bf80f4bSopenharmony_ci EXPECT_NE(object.GetInterfacePtr<IObject>(), nullptr); 548bf80f4bSopenharmony_ci EXPECT_EQ(object.GetInterfacePtr<IObject>(), object.GetIObject()); 558bf80f4bSopenharmony_ci EXPECT_EQ(interface_pointer_cast<IObject>(object), object); 568bf80f4bSopenharmony_ci EXPECT_EQ(interface_cast<IObject>(object), object.GetIObject().get()); 578bf80f4bSopenharmony_ci 588bf80f4bSopenharmony_ci META_NS::Object object2; 598bf80f4bSopenharmony_ci ASSERT_TRUE(object2.Initialize(object)); 608bf80f4bSopenharmony_ci EXPECT_EQ(object, object2); 618bf80f4bSopenharmony_ci EXPECT_TRUE(object == object2); 628bf80f4bSopenharmony_ci EXPECT_FALSE(object != object2); 638bf80f4bSopenharmony_ci 648bf80f4bSopenharmony_ci META_NS::Object object3; 658bf80f4bSopenharmony_ci EXPECT_TRUE(object != object3); 668bf80f4bSopenharmony_ci EXPECT_FALSE(object == object3); 678bf80f4bSopenharmony_ci EXPECT_FALSE(object3); 688bf80f4bSopenharmony_ci EXPECT_NE(object3.GetInterfacePtr<IObject>(), nullptr); 698bf80f4bSopenharmony_ci EXPECT_TRUE(object3); 708bf80f4bSopenharmony_ci} 718bf80f4bSopenharmony_ci 728bf80f4bSopenharmony_ci/** 738bf80f4bSopenharmony_ci * @tc.name: ObjectTest 748bf80f4bSopenharmony_ci * @tc.desc: test TypeConversion function 758bf80f4bSopenharmony_ci * @tc.type: FUNC 768bf80f4bSopenharmony_ci * @tc.require: I7DMS1 778bf80f4bSopenharmony_ci */ 788bf80f4bSopenharmony_ciHWTEST_F(ObjectTest, TypeConversion, TestSize.Level1) 798bf80f4bSopenharmony_ci{ 808bf80f4bSopenharmony_ci META_NS::Object o1(interface_pointer_cast<IObject>(CreateTestType())); 818bf80f4bSopenharmony_ci META_NS::Object o2(interface_pointer_cast<IObject>(CreateTestContainer())); 828bf80f4bSopenharmony_ci 838bf80f4bSopenharmony_ci EXPECT_TRUE(o1); 848bf80f4bSopenharmony_ci EXPECT_TRUE(o2); 858bf80f4bSopenharmony_ci EXPECT_NE(o1.GetIObject()->GetClassId(), o2.GetIObject()->GetClassId()); 868bf80f4bSopenharmony_ci 878bf80f4bSopenharmony_ci o1 = o2; 888bf80f4bSopenharmony_ci EXPECT_TRUE(o1); 898bf80f4bSopenharmony_ci EXPECT_EQ(o1.GetIObject(), o2.GetIObject()); 908bf80f4bSopenharmony_ci EXPECT_EQ(o1.GetIObject()->GetClassId(), o2.GetIObject()->GetClassId()); 918bf80f4bSopenharmony_ci} 928bf80f4bSopenharmony_ci 938bf80f4bSopenharmony_ci/** 948bf80f4bSopenharmony_ci * @tc.name: ObjectTest 958bf80f4bSopenharmony_ci * @tc.desc: test LazyInitBase function 968bf80f4bSopenharmony_ci * @tc.type: FUNC 978bf80f4bSopenharmony_ci * @tc.require: I7DMS1 988bf80f4bSopenharmony_ci */ 998bf80f4bSopenharmony_ciHWTEST_F(ObjectTest, LazyInitBase, TestSize.Level1) 1008bf80f4bSopenharmony_ci{ 1018bf80f4bSopenharmony_ci static constexpr auto propName = "value"; 1028bf80f4bSopenharmony_ci auto o1 = Object(); 1038bf80f4bSopenharmony_ci Object o2; 1048bf80f4bSopenharmony_ci 1058bf80f4bSopenharmony_ci EXPECT_FALSE(o1); 1068bf80f4bSopenharmony_ci EXPECT_FALSE(o2); 1078bf80f4bSopenharmony_ci o2 = o1; 1088bf80f4bSopenharmony_ci EXPECT_TRUE(o1); 1098bf80f4bSopenharmony_ci EXPECT_TRUE(o2); 1108bf80f4bSopenharmony_ci Object o3; 1118bf80f4bSopenharmony_ci EXPECT_FALSE(o3); 1128bf80f4bSopenharmony_ci o1.MetaProperty(propName, 5); 1138bf80f4bSopenharmony_ci o3 = o1; 1148bf80f4bSopenharmony_ci EXPECT_TRUE(o1); 1158bf80f4bSopenharmony_ci EXPECT_TRUE(o2); 1168bf80f4bSopenharmony_ci EXPECT_TRUE(o3); 1178bf80f4bSopenharmony_ci EXPECT_EQ(o1, o2); 1188bf80f4bSopenharmony_ci EXPECT_EQ(o1, o3); 1198bf80f4bSopenharmony_ci 1208bf80f4bSopenharmony_ci auto p1 = o1.Metadata().GetPropertyByName(propName); 1218bf80f4bSopenharmony_ci auto p2 = o2.Metadata().GetPropertyByName(propName); 1228bf80f4bSopenharmony_ci auto p3 = o3.Metadata().GetPropertyByName(propName); 1238bf80f4bSopenharmony_ci 1248bf80f4bSopenharmony_ci EXPECT_EQ(p1, p3); 1258bf80f4bSopenharmony_ci EXPECT_EQ(p2, p1); 1268bf80f4bSopenharmony_ci} 1278bf80f4bSopenharmony_ci 1288bf80f4bSopenharmony_ci/** 1298bf80f4bSopenharmony_ci * @tc.name: ObjectTest 1308bf80f4bSopenharmony_ci * @tc.desc: test ResetIObject function 1318bf80f4bSopenharmony_ci * @tc.type: FUNC 1328bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1338bf80f4bSopenharmony_ci */ 1348bf80f4bSopenharmony_ciHWTEST_F(ObjectTest, ResetIObject, TestSize.Level1) 1358bf80f4bSopenharmony_ci{ 1368bf80f4bSopenharmony_ci META_NS::Object object1; 1378bf80f4bSopenharmony_ci META_NS::Object object2; 1388bf80f4bSopenharmony_ci auto iobject1 = object1.GetIObject(); 1398bf80f4bSopenharmony_ci object2 = object1; 1408bf80f4bSopenharmony_ci auto iobject2 = object2.GetIObject(); 1418bf80f4bSopenharmony_ci EXPECT_EQ(iobject1, iobject2); 1428bf80f4bSopenharmony_ci 1438bf80f4bSopenharmony_ci object1.ResetIObject(); 1448bf80f4bSopenharmony_ci EXPECT_FALSE(object1); 1458bf80f4bSopenharmony_ci EXPECT_NE(object1.GetIObject(), iobject2); 1468bf80f4bSopenharmony_ci} 1478bf80f4bSopenharmony_ciMETA_END_NAMESPACE()