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 <gtest/gtest.h> 178bf80f4bSopenharmony_ci 188bf80f4bSopenharmony_ci#include <meta/api/content_object.h> 198bf80f4bSopenharmony_ci#include <meta/api/iteration.h> 208bf80f4bSopenharmony_ci#include <meta/api/loaders/json_content_loader.h> 218bf80f4bSopenharmony_ci#include <meta/interface/loaders/intf_class_content_loader.h> 228bf80f4bSopenharmony_ci 238bf80f4bSopenharmony_ci#include "src/serialisation_utils.h" 248bf80f4bSopenharmony_ci#include "src/test_runner.h" 258bf80f4bSopenharmony_ci#include "src/testing_objects.h" 268bf80f4bSopenharmony_ci#include "src/util.h" 278bf80f4bSopenharmony_ci 288bf80f4bSopenharmony_ciusing namespace testing; 298bf80f4bSopenharmony_ciusing namespace testing::ext; 308bf80f4bSopenharmony_ci 318bf80f4bSopenharmony_ciMETA_BEGIN_NAMESPACE() 328bf80f4bSopenharmony_ci 338bf80f4bSopenharmony_ciclass IntfContentTest : public testing::Test { 348bf80f4bSopenharmony_cipublic: 358bf80f4bSopenharmony_ci static void SetUpTestSuite() 368bf80f4bSopenharmony_ci { 378bf80f4bSopenharmony_ci SetTest(); 388bf80f4bSopenharmony_ci } 398bf80f4bSopenharmony_ci static void TearDownTestSuite() 408bf80f4bSopenharmony_ci { 418bf80f4bSopenharmony_ci ResetTest(); 428bf80f4bSopenharmony_ci } 438bf80f4bSopenharmony_ci void SetUp() override {} 448bf80f4bSopenharmony_ci void TearDown() override {} 458bf80f4bSopenharmony_ci}; 468bf80f4bSopenharmony_ci 478bf80f4bSopenharmony_ci/** 488bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 498bf80f4bSopenharmony_ci * @tc.desc: test Search function 508bf80f4bSopenharmony_ci * @tc.type: FUNC 518bf80f4bSopenharmony_ci * @tc.require: I7DMS1 528bf80f4bSopenharmony_ci */ 538bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, Search, TestSize.Level1) 548bf80f4bSopenharmony_ci{ 558bf80f4bSopenharmony_ci auto content = CreateTestType<IObject>("Content"); 568bf80f4bSopenharmony_ci 578bf80f4bSopenharmony_ci ContentObject co; 588bf80f4bSopenharmony_ci co.SetContent(content); 598bf80f4bSopenharmony_ci auto c = CreateTestContainer<IContainer>(); 608bf80f4bSopenharmony_ci c->Add(co); 618bf80f4bSopenharmony_ci EXPECT_FALSE(c->FindAny({ "Content", TraversalType::NO_HIERARCHY })); 628bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER }), content); 638bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER, { ITestType::UID } }), content); 648bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAny({ "", TraversalType::DEPTH_FIRST_PRE_ORDER, { ITestType::UID } }), content); 658bf80f4bSopenharmony_ci EXPECT_FALSE(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER, { IContainer::UID } })); 668bf80f4bSopenharmony_ci 678bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 2); 688bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 1); 698bf80f4bSopenharmony_ci 708bf80f4bSopenharmony_ci EXPECT_TRUE(ContainsObjectWithName(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }), "Content")); 718bf80f4bSopenharmony_ci 728bf80f4bSopenharmony_ci co.ContentSearchable(false); 738bf80f4bSopenharmony_ci EXPECT_FALSE(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER })); 748bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 1); 758bf80f4bSopenharmony_ci 768bf80f4bSopenharmony_ci co.ContentSearchable(true); 778bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER }), content); 788bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 2); 798bf80f4bSopenharmony_ci} 808bf80f4bSopenharmony_ci 818bf80f4bSopenharmony_ci/** 828bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 838bf80f4bSopenharmony_ci * @tc.desc: test SearchContentContainer function 848bf80f4bSopenharmony_ci * @tc.type: FUNC 858bf80f4bSopenharmony_ci * @tc.require: I7DMS1 868bf80f4bSopenharmony_ci */ 878bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, SearchContentContainer, TestSize.Level1) 888bf80f4bSopenharmony_ci{ 898bf80f4bSopenharmony_ci auto ccontent = CreateTestType<IObject>("Content"); 908bf80f4bSopenharmony_ci auto content = CreateTestContainer<IContainer>(); 918bf80f4bSopenharmony_ci content->Add(ccontent); 928bf80f4bSopenharmony_ci 938bf80f4bSopenharmony_ci ContentObject co; 948bf80f4bSopenharmony_ci co.SetContent(interface_pointer_cast<IObject>(content)); 958bf80f4bSopenharmony_ci auto c = CreateTestContainer<IContainer>(); 968bf80f4bSopenharmony_ci c->Add(co); 978bf80f4bSopenharmony_ci EXPECT_FALSE(c->FindAny({ "Content", TraversalType::NO_HIERARCHY })); 988bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER }), ccontent); 998bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 3); 1008bf80f4bSopenharmony_ci 1018bf80f4bSopenharmony_ci co.ContentSearchable(false); 1028bf80f4bSopenharmony_ci EXPECT_FALSE(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER })); 1038bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 1); 1048bf80f4bSopenharmony_ci 1058bf80f4bSopenharmony_ci co.ContentSearchable(true); 1068bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAny({ "Content", TraversalType::DEPTH_FIRST_PRE_ORDER }), ccontent); 1078bf80f4bSopenharmony_ci EXPECT_EQ(c->FindAll({ "", TraversalType::DEPTH_FIRST_PRE_ORDER }).size(), 3); 1088bf80f4bSopenharmony_ci} 1098bf80f4bSopenharmony_ci 1108bf80f4bSopenharmony_ci/** 1118bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 1128bf80f4bSopenharmony_ci * @tc.desc: test Iteration function 1138bf80f4bSopenharmony_ci * @tc.type: FUNC 1148bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1158bf80f4bSopenharmony_ci */ 1168bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, Iteration, TestSize.Level1) 1178bf80f4bSopenharmony_ci{ 1188bf80f4bSopenharmony_ci auto ccontent = CreateTestType<IObject>("Content"); 1198bf80f4bSopenharmony_ci auto content = CreateTestContainer<IContainer>(); 1208bf80f4bSopenharmony_ci content->Add(ccontent); 1218bf80f4bSopenharmony_ci 1228bf80f4bSopenharmony_ci ContentObject co; 1238bf80f4bSopenharmony_ci co.SetContent(interface_pointer_cast<IObject>(content)); 1248bf80f4bSopenharmony_ci auto c = CreateTestContainer<IContainer>(); 1258bf80f4bSopenharmony_ci c->Add(co); 1268bf80f4bSopenharmony_ci 1278bf80f4bSopenharmony_ci { 1288bf80f4bSopenharmony_ci BASE_NS::vector<IObject::Ptr> vec; 1298bf80f4bSopenharmony_ci EXPECT_TRUE(ForEachShared( 1308bf80f4bSopenharmony_ci c, [&](const IObject::Ptr& obj) { vec.push_back(obj); }, TraversalType::DEPTH_FIRST_PRE_ORDER)); 1318bf80f4bSopenharmony_ci EXPECT_EQ(vec.size(), 3); 1328bf80f4bSopenharmony_ci EXPECT_TRUE(ContainsObjectWithName(vec, "Content")); 1338bf80f4bSopenharmony_ci } 1348bf80f4bSopenharmony_ci 1358bf80f4bSopenharmony_ci co.ContentSearchable(false); 1368bf80f4bSopenharmony_ci 1378bf80f4bSopenharmony_ci { 1388bf80f4bSopenharmony_ci BASE_NS::vector<IObject::Ptr> vec; 1398bf80f4bSopenharmony_ci EXPECT_TRUE(ForEachShared( 1408bf80f4bSopenharmony_ci c, [&](const IObject::Ptr& obj) { vec.push_back(obj); }, TraversalType::DEPTH_FIRST_PRE_ORDER)); 1418bf80f4bSopenharmony_ci EXPECT_EQ(vec.size(), 1); 1428bf80f4bSopenharmony_ci EXPECT_FALSE(ContainsObjectWithName(vec, "Content")); 1438bf80f4bSopenharmony_ci } 1448bf80f4bSopenharmony_ci} 1458bf80f4bSopenharmony_ci 1468bf80f4bSopenharmony_ci/** 1478bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 1488bf80f4bSopenharmony_ci * @tc.desc: test Serialization function 1498bf80f4bSopenharmony_ci * @tc.type: FUNC 1508bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1518bf80f4bSopenharmony_ci */ 1528bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, Serialization, TestSize.Level1) 1538bf80f4bSopenharmony_ci{ 1548bf80f4bSopenharmony_ci { 1558bf80f4bSopenharmony_ci TestSerialiser ser; 1568bf80f4bSopenharmony_ci 1578bf80f4bSopenharmony_ci ContentObject co; 1588bf80f4bSopenharmony_ci co.SerializeContent(false); 1598bf80f4bSopenharmony_ci co.SetContent(CreateTestType<IObject>("Content")); 1608bf80f4bSopenharmony_ci ASSERT_TRUE(ser.Export(co)); 1618bf80f4bSopenharmony_ci 1628bf80f4bSopenharmony_ci auto imp = ser.Import<IContent>(); 1638bf80f4bSopenharmony_ci ASSERT_TRUE(imp); 1648bf80f4bSopenharmony_ci EXPECT_FALSE(imp->Content()->GetValue()); 1658bf80f4bSopenharmony_ci } 1668bf80f4bSopenharmony_ci 1678bf80f4bSopenharmony_ci { 1688bf80f4bSopenharmony_ci TestSerialiser ser; 1698bf80f4bSopenharmony_ci 1708bf80f4bSopenharmony_ci ContentObject co; 1718bf80f4bSopenharmony_ci co.SerializeContent(true); 1728bf80f4bSopenharmony_ci co.SetContent(CreateTestType<IObject>("Content")); 1738bf80f4bSopenharmony_ci ASSERT_TRUE(ser.Export(co)); 1748bf80f4bSopenharmony_ci 1758bf80f4bSopenharmony_ci auto imp = ser.Import<IContent>(); 1768bf80f4bSopenharmony_ci ASSERT_TRUE(imp); 1778bf80f4bSopenharmony_ci ASSERT_TRUE(imp->Content()->GetValue()); 1788bf80f4bSopenharmony_ci EXPECT_EQ(imp->Content()->GetValue()->GetName(), "Content"); 1798bf80f4bSopenharmony_ci } 1808bf80f4bSopenharmony_ci} 1818bf80f4bSopenharmony_ci 1828bf80f4bSopenharmony_ci/** 1838bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 1848bf80f4bSopenharmony_ci * @tc.desc: test Defaults function 1858bf80f4bSopenharmony_ci * @tc.type: FUNC 1868bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1878bf80f4bSopenharmony_ci */ 1888bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, Defaults, TestSize.Level1) 1898bf80f4bSopenharmony_ci{ 1908bf80f4bSopenharmony_ci ContentObject co; 1918bf80f4bSopenharmony_ci const auto objectFlags = interface_cast<IObjectFlags>(co); 1928bf80f4bSopenharmony_ci ASSERT_TRUE(objectFlags); 1938bf80f4bSopenharmony_ci EXPECT_FALSE(objectFlags->GetObjectFlags().IsSet(META_NS::ObjectFlagBits::SERIALIZE_HIERARCHY)); 1948bf80f4bSopenharmony_ci} 1958bf80f4bSopenharmony_ci 1968bf80f4bSopenharmony_ci/** 1978bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 1988bf80f4bSopenharmony_ci * @tc.desc: test ObjectFlagsNoHierarchy function 1998bf80f4bSopenharmony_ci * @tc.type: FUNC 2008bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2018bf80f4bSopenharmony_ci */ 2028bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, ObjectFlagsNoHierarchy, TestSize.Level1) 2038bf80f4bSopenharmony_ci{ 2048bf80f4bSopenharmony_ci TestSerialiser ser; 2058bf80f4bSopenharmony_ci ContentObject co; 2068bf80f4bSopenharmony_ci co.SetContent(CreateTestType<IObject>("Content")); 2078bf80f4bSopenharmony_ci 2088bf80f4bSopenharmony_ci ASSERT_TRUE(ser.Export(co)); 2098bf80f4bSopenharmony_ci 2108bf80f4bSopenharmony_ci auto imported = ser.Import<IContent>(); 2118bf80f4bSopenharmony_ci ASSERT_TRUE(imported); 2128bf80f4bSopenharmony_ci 2138bf80f4bSopenharmony_ci EXPECT_FALSE(imported->Content()->GetValue()); 2148bf80f4bSopenharmony_ci} 2158bf80f4bSopenharmony_ci 2168bf80f4bSopenharmony_ci/** 2178bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 2188bf80f4bSopenharmony_ci * @tc.desc: test ObjectFlagsHierarchy function 2198bf80f4bSopenharmony_ci * @tc.type: FUNC 2208bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2218bf80f4bSopenharmony_ci */ 2228bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, ObjectFlagsHierarchy, TestSize.Level1) 2238bf80f4bSopenharmony_ci{ 2248bf80f4bSopenharmony_ci TestSerialiser ser; 2258bf80f4bSopenharmony_ci ContentObject co; 2268bf80f4bSopenharmony_ci co.SetContent(CreateTestType<IObject>("Content")); 2278bf80f4bSopenharmony_ci 2288bf80f4bSopenharmony_ci auto flagsIntPtr = interface_cast<IObjectFlags>(co); 2298bf80f4bSopenharmony_ci ASSERT_TRUE(flagsIntPtr); 2308bf80f4bSopenharmony_ci SetObjectFlags(co, ObjectFlagBits::SERIALIZE_HIERARCHY, true); 2318bf80f4bSopenharmony_ci 2328bf80f4bSopenharmony_ci ASSERT_TRUE(ser.Export(co)); 2338bf80f4bSopenharmony_ci auto imported = ser.Import<IContent>(); 2348bf80f4bSopenharmony_ci ASSERT_TRUE(imported); 2358bf80f4bSopenharmony_ci 2368bf80f4bSopenharmony_ci auto content = GetValue(imported->Content()); 2378bf80f4bSopenharmony_ci ASSERT_TRUE(content); 2388bf80f4bSopenharmony_ci EXPECT_EQ(content->GetName(), "Content"); 2398bf80f4bSopenharmony_ci} 2408bf80f4bSopenharmony_ci 2418bf80f4bSopenharmony_ci/** 2428bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 2438bf80f4bSopenharmony_ci * @tc.desc: test Loader function 2448bf80f4bSopenharmony_ci * @tc.type: FUNC 2458bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2468bf80f4bSopenharmony_ci */ 2478bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, Loader, TestSize.Level1) 2488bf80f4bSopenharmony_ci{ 2498bf80f4bSopenharmony_ci auto loader = GetObjectRegistry().Create<IClassContentLoader>(ClassId::ClassContentLoader); 2508bf80f4bSopenharmony_ci ASSERT_TRUE(loader); 2518bf80f4bSopenharmony_ci loader->ClassId()->SetValue(ClassId::TestType); 2528bf80f4bSopenharmony_ci ASSERT_TRUE(loader->Create({})); 2538bf80f4bSopenharmony_ci 2548bf80f4bSopenharmony_ci ContentObject co; 2558bf80f4bSopenharmony_ci co.ContentLoader(loader); 2568bf80f4bSopenharmony_ci 2578bf80f4bSopenharmony_ci auto obj = co.Content()->GetValue(); 2588bf80f4bSopenharmony_ci ASSERT_TRUE(obj); 2598bf80f4bSopenharmony_ci EXPECT_TRUE(interface_cast<ITestType>(obj)); 2608bf80f4bSopenharmony_ci 2618bf80f4bSopenharmony_ci loader->ClassId()->SetValue(ClassId::TestContainer); 2628bf80f4bSopenharmony_ci 2638bf80f4bSopenharmony_ci auto cont = co.Content()->GetValue(); 2648bf80f4bSopenharmony_ci ASSERT_TRUE(cont); 2658bf80f4bSopenharmony_ci EXPECT_TRUE(interface_cast<ITestContainer>(cont)); 2668bf80f4bSopenharmony_ci} 2678bf80f4bSopenharmony_ci 2688bf80f4bSopenharmony_ci/** 2698bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 2708bf80f4bSopenharmony_ci * @tc.desc: test ContentRequiredInterfaces function 2718bf80f4bSopenharmony_ci * @tc.type: FUNC 2728bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2738bf80f4bSopenharmony_ci */ 2748bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, ContentRequiredInterfaces, TestSize.Level1) 2758bf80f4bSopenharmony_ci{ 2768bf80f4bSopenharmony_ci ContentObject co; 2778bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetRequiredInterfaces({ ITestType::UID })); 2788bf80f4bSopenharmony_ci 2798bf80f4bSopenharmony_ci auto correctType = GetObjectRegistry().Create(ClassId::TestType); 2808bf80f4bSopenharmony_ci auto wrongType = GetObjectRegistry().Create(ClassId::Object); 2818bf80f4bSopenharmony_ci 2828bf80f4bSopenharmony_ci EXPECT_FALSE(co.SetContent(wrongType)); 2838bf80f4bSopenharmony_ci EXPECT_FALSE(co.Content()->GetValue()); 2848bf80f4bSopenharmony_ci 2858bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetContent(correctType)); 2868bf80f4bSopenharmony_ci EXPECT_EQ(co.Content()->GetValue(), correctType); 2878bf80f4bSopenharmony_ci 2888bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetRequiredInterfaces({})); 2898bf80f4bSopenharmony_ci EXPECT_EQ(co.Content()->GetValue(), correctType); 2908bf80f4bSopenharmony_ci 2918bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetContent(wrongType)); 2928bf80f4bSopenharmony_ci EXPECT_EQ(co.Content()->GetValue(), wrongType); 2938bf80f4bSopenharmony_ci} 2948bf80f4bSopenharmony_ci 2958bf80f4bSopenharmony_ci/** 2968bf80f4bSopenharmony_ci * @tc.name: IntfContentTest 2978bf80f4bSopenharmony_ci * @tc.desc: test ContentLoaderRequiredInterfaces function 2988bf80f4bSopenharmony_ci * @tc.type: FUNC 2998bf80f4bSopenharmony_ci * @tc.require: I7DMS1 3008bf80f4bSopenharmony_ci */ 3018bf80f4bSopenharmony_ciHWTEST_F(IntfContentTest, ContentLoaderRequiredInterfaces, TestSize.Level1) 3028bf80f4bSopenharmony_ci{ 3038bf80f4bSopenharmony_ci ContentObject co; 3048bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetRequiredInterfaces({ ITestType::UID })); 3058bf80f4bSopenharmony_ci 3068bf80f4bSopenharmony_ci auto correctType = ClassId::TestType; 3078bf80f4bSopenharmony_ci auto wrongType = ClassId::Object; 3088bf80f4bSopenharmony_ci 3098bf80f4bSopenharmony_ci auto loader = GetObjectRegistry().Create<IClassContentLoader>(ClassId::ClassContentLoader); 3108bf80f4bSopenharmony_ci ASSERT_TRUE(loader); 3118bf80f4bSopenharmony_ci co.ContentLoader()->SetValue(loader); 3128bf80f4bSopenharmony_ci EXPECT_FALSE(co.Content()->GetValue()); 3138bf80f4bSopenharmony_ci 3148bf80f4bSopenharmony_ci loader->ClassId()->SetValue(correctType); 3158bf80f4bSopenharmony_ci EXPECT_TRUE(co.Content()->GetValue()); 3168bf80f4bSopenharmony_ci 3178bf80f4bSopenharmony_ci loader->ClassId()->SetValue(wrongType); 3188bf80f4bSopenharmony_ci EXPECT_FALSE(co.Content()->GetValue()); 3198bf80f4bSopenharmony_ci 3208bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetRequiredInterfaces({})); 3218bf80f4bSopenharmony_ci EXPECT_TRUE(co.Content()->GetValue()); 3228bf80f4bSopenharmony_ci 3238bf80f4bSopenharmony_ci EXPECT_TRUE(co.SetRequiredInterfaces({ ITestType::UID })); 3248bf80f4bSopenharmony_ci EXPECT_FALSE(co.Content()->GetValue()); 3258bf80f4bSopenharmony_ci} 3268bf80f4bSopenharmony_ci 3278bf80f4bSopenharmony_ciMETA_END_NAMESPACE()