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()