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.h> 178bf80f4bSopenharmony_ci#include <gtest/gtest.h> 188bf80f4bSopenharmony_ci 198bf80f4bSopenharmony_ci#include <meta/api/util.h> 208bf80f4bSopenharmony_ci#include <meta/base/bit_field.h> 218bf80f4bSopenharmony_ci#include <meta/ext/object.h> 228bf80f4bSopenharmony_ci#include <meta/interface/intf_object.h> 238bf80f4bSopenharmony_ci#include <meta/interface/intf_object_registry.h> 248bf80f4bSopenharmony_ci 258bf80f4bSopenharmony_ci#include "src/test_runner.h" 268bf80f4bSopenharmony_ci 278bf80f4bSopenharmony_cinamespace { 288bf80f4bSopenharmony_ci const int TESTVALUE = 16; 298bf80f4bSopenharmony_ci} 308bf80f4bSopenharmony_ci 318bf80f4bSopenharmony_cienum TestFlagBits : uint32_t { 328bf80f4bSopenharmony_ci FLAG1 = 1, 338bf80f4bSopenharmony_ci FLAG2 = 2, 348bf80f4bSopenharmony_ci FLAG4 = 4, 358bf80f4bSopenharmony_ci}; 368bf80f4bSopenharmony_ci 378bf80f4bSopenharmony_ciusing TestFlags = META_NS::EnumBitField<TestFlagBits, uint64_t>; 388bf80f4bSopenharmony_ciMETA_TYPE(TestFlags) 398bf80f4bSopenharmony_ci 408bf80f4bSopenharmony_ciMETA_BEGIN_NAMESPACE() 418bf80f4bSopenharmony_ci 428bf80f4bSopenharmony_ciusing namespace testing::ext; 438bf80f4bSopenharmony_ci 448bf80f4bSopenharmony_ciMETA_REGISTER_INTERFACE(ITestFlagsInterface, "eba09b49-6efe-4b97-b809-981569a935e7") 458bf80f4bSopenharmony_ci 468bf80f4bSopenharmony_ciclass ITestFlagsInterface : public CORE_NS::IInterface { 478bf80f4bSopenharmony_ci META_INTERFACE2(CORE_NS::IInterface, ITestFlagsInterface) 488bf80f4bSopenharmony_cipublic: 498bf80f4bSopenharmony_ci META_PROPERTY(TestFlags, Flags); 508bf80f4bSopenharmony_ci}; 518bf80f4bSopenharmony_ci 528bf80f4bSopenharmony_ciMETA_REGISTER_CLASS( 538bf80f4bSopenharmony_ci BitfieldPropertyObject, "e62b0ab3-b07d-4423-b2bc-d4a522db8ded", META_NS::ObjectCategoryBits::NO_CATEGORY) 548bf80f4bSopenharmony_ci 558bf80f4bSopenharmony_ciclass BitfieldPropertyObject final 568bf80f4bSopenharmony_ci : public META_NS::MetaObjectFwd<BitfieldPropertyObject, ClassId::BitfieldPropertyObject, 578bf80f4bSopenharmony_ci META_NS::ClassId::MetaObject, ITestFlagsInterface> { 588bf80f4bSopenharmony_ci META_IMPLEMENT_PROPERTY(TestFlags, Flags, TestFlagBits::FLAG2) 598bf80f4bSopenharmony_ci}; 608bf80f4bSopenharmony_ci 618bf80f4bSopenharmony_ci 628bf80f4bSopenharmony_ciclass BitfieldPropertyTest : public testing::Test { 638bf80f4bSopenharmony_cipublic: 648bf80f4bSopenharmony_ci static void SetUpTestSuite() 658bf80f4bSopenharmony_ci { 668bf80f4bSopenharmony_ci SetTest(); 678bf80f4bSopenharmony_ci RegisterObjectType<BitfieldPropertyObject>(); 688bf80f4bSopenharmony_ci } 698bf80f4bSopenharmony_ci static void TearDownTestSuite() 708bf80f4bSopenharmony_ci { 718bf80f4bSopenharmony_ci UnregisterObjectType<BitfieldPropertyObject>(); 728bf80f4bSopenharmony_ci ResetTest(); 738bf80f4bSopenharmony_ci } 748bf80f4bSopenharmony_ci void SetUp() override 758bf80f4bSopenharmony_ci { 768bf80f4bSopenharmony_ci object_ = Meta::GetObjectRegistry().Create<ITestFlagsInterface> (ClassId::BitfieldPropertyObject); 778bf80f4bSopenharmony_ci } 788bf80f4bSopenharmony_ci void TearDown() override 798bf80f4bSopenharmony_ci { 808bf80f4bSopenharmony_ci object_.reset(); 818bf80f4bSopenharmony_ci } 828bf80f4bSopenharmony_ciprotected: 838bf80f4bSopenharmony_ci ITestFlagsInterface::Ptr object_; 848bf80f4bSopenharmony_ci}; 858bf80f4bSopenharmony_ci 868bf80f4bSopenharmony_ciMATCHER_P (ExactBitsSet, n, "") 878bf80f4bSopenharmony_ci{ 888bf80f4bSopenharmony_ci return arg == n; 898bf80f4bSopenharmony_ci} 908bf80f4bSopenharmony_ci 918bf80f4bSopenharmony_ci/** 928bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 938bf80f4bSopenharmony_ci * @tc.desc: test GetValue function 948bf80f4bSopenharmony_ci * @tc.type: FUNC 958bf80f4bSopenharmony_ci * @tc.require: I7DMS1 968bf80f4bSopenharmony_ci */ 978bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, GetValue, TestSize.Level1) 988bf80f4bSopenharmony_ci{ 998bf80f4bSopenharmony_ci EXPECT_EQ(GetValue(object_->Flags()), TestFlagBits::FLAG2); 1008bf80f4bSopenharmony_ci} 1018bf80f4bSopenharmony_ci 1028bf80f4bSopenharmony_ci/** 1038bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1048bf80f4bSopenharmony_ci * @tc.desc: test SetValue function 1058bf80f4bSopenharmony_ci * @tc.type: FUNC 1068bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1078bf80f4bSopenharmony_ci */ 1088bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, SetValue, TestSize.Level1) 1098bf80f4bSopenharmony_ci{ 1108bf80f4bSopenharmony_ci SetValue(object_->Flags(), TestFlagBits::FLAG1 | TestFlagBits::FLAG4); 1118bf80f4bSopenharmony_ci EXPECT_EQ(GetValue(object_->Flags()), TestFlagBits::FLAG1 | TestFlagBits::FLAG4); 1128bf80f4bSopenharmony_ci} 1138bf80f4bSopenharmony_ci 1148bf80f4bSopenharmony_ci/** 1158bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1168bf80f4bSopenharmony_ci * @tc.desc: test SetValue function 1178bf80f4bSopenharmony_ci * @tc.type: FUNC 1188bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1198bf80f4bSopenharmony_ci */ 1208bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, SetValueOp, TestSize.Level1) 1218bf80f4bSopenharmony_ci{ 1228bf80f4bSopenharmony_ci TestFlags value1 = TestFlagBits::FLAG2; 1238bf80f4bSopenharmony_ci SetValue(object_->Flags(), value1 | TestFlagBits::FLAG1 | TestFlagBits::FLAG4); 1248bf80f4bSopenharmony_ci EXPECT_EQ(GetValue(object_->Flags()), TestFlagBits::FLAG1 | TestFlagBits::FLAG2 | TestFlagBits::FLAG4); 1258bf80f4bSopenharmony_ci} 1268bf80f4bSopenharmony_ci 1278bf80f4bSopenharmony_ci/** 1288bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1298bf80f4bSopenharmony_ci * @tc.desc: test Or function 1308bf80f4bSopenharmony_ci * @tc.type: FUNC 1318bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1328bf80f4bSopenharmony_ci */ 1338bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Or, TestSize.Level1) 1348bf80f4bSopenharmony_ci{ 1358bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value1(TestFlagBits::FLAG1); 1368bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value2(TestFlagBits::FLAG2 | TestFlagBits::FLAG4); 1378bf80f4bSopenharmony_ci EXPECT_THAT( 1388bf80f4bSopenharmony_ci (value1 | value2).GetValue(), ExactBitsSet(TestFlagBits::FLAG1 | TestFlagBits::FLAG2 | TestFlagBits::FLAG4)); 1398bf80f4bSopenharmony_ci} 1408bf80f4bSopenharmony_ci 1418bf80f4bSopenharmony_ci/** 1428bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1438bf80f4bSopenharmony_ci * @tc.desc: test And function 1448bf80f4bSopenharmony_ci * @tc.type: FUNC 1458bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1468bf80f4bSopenharmony_ci */ 1478bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, And, TestSize.Level1) 1488bf80f4bSopenharmony_ci{ 1498bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value1(TestFlagBits::FLAG1); 1508bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value2(TestFlagBits::FLAG1 | TestFlagBits::FLAG2 | TestFlagBits::FLAG4); 1518bf80f4bSopenharmony_ci EXPECT_THAT((value1 & value2).GetValue(), ExactBitsSet(TestFlagBits::FLAG1)); 1528bf80f4bSopenharmony_ci} 1538bf80f4bSopenharmony_ci 1548bf80f4bSopenharmony_ci/** 1558bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1568bf80f4bSopenharmony_ci * @tc.desc: test Xor function 1578bf80f4bSopenharmony_ci * @tc.type: FUNC 1588bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1598bf80f4bSopenharmony_ci */ 1608bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Xor, TestSize.Level1) 1618bf80f4bSopenharmony_ci{ 1628bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value1(TestFlagBits::FLAG1); 1638bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value2(TestFlagBits::FLAG1 | TestFlagBits::FLAG2 | TestFlagBits::FLAG4); 1648bf80f4bSopenharmony_ci EXPECT_THAT((value1 ^ value2).GetValue(), ExactBitsSet(TestFlagBits::FLAG2 | TestFlagBits::FLAG4)); 1658bf80f4bSopenharmony_ci} 1668bf80f4bSopenharmony_ci 1678bf80f4bSopenharmony_ci/** 1688bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1698bf80f4bSopenharmony_ci * @tc.desc: test Not function 1708bf80f4bSopenharmony_ci * @tc.type: FUNC 1718bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1728bf80f4bSopenharmony_ci */ 1738bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Not, TestSize.Level1) 1748bf80f4bSopenharmony_ci{ 1758bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value1(TestFlagBits::FLAG1); 1768bf80f4bSopenharmony_ci EXPECT_THAT((~value1).GetValue(), ExactBitsSet(~TestFlagBits::FLAG1)); 1778bf80f4bSopenharmony_ci} 1788bf80f4bSopenharmony_ci 1798bf80f4bSopenharmony_ci/** 1808bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 1818bf80f4bSopenharmony_ci * @tc.desc: test SetAndClear function 1828bf80f4bSopenharmony_ci * @tc.type: FUNC 1838bf80f4bSopenharmony_ci * @tc.require: I7DMS1 1848bf80f4bSopenharmony_ci */ 1858bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, SetAndClear, TestSize.Level1) 1868bf80f4bSopenharmony_ci{ 1878bf80f4bSopenharmony_ci EnumBitField<TestFlagBits> value(TestFlagBits::FLAG1); 1888bf80f4bSopenharmony_ci EXPECT_TRUE(value.IsSet(TestFlagBits::FLAG1)); 1898bf80f4bSopenharmony_ci EXPECT_FALSE(value.IsSet(TestFlagBits::FLAG2)); 1908bf80f4bSopenharmony_ci 1918bf80f4bSopenharmony_ci value.Set(TestFlagBits::FLAG2); 1928bf80f4bSopenharmony_ci EXPECT_TRUE(value.IsSet(TestFlagBits::FLAG2)); 1938bf80f4bSopenharmony_ci 1948bf80f4bSopenharmony_ci value.Clear(TestFlagBits::FLAG1); 1958bf80f4bSopenharmony_ci EXPECT_FALSE(value.IsSet(TestFlagBits::FLAG1)); 1968bf80f4bSopenharmony_ci EXPECT_TRUE(value.IsSet(TestFlagBits::FLAG2)); 1978bf80f4bSopenharmony_ci} 1988bf80f4bSopenharmony_ci 1998bf80f4bSopenharmony_cienum ExtTestFlagBits : uint32_t { 2008bf80f4bSopenharmony_ci FLAG1 = 1, 2018bf80f4bSopenharmony_ci FLAG2 = 2, 2028bf80f4bSopenharmony_ci FLAG4 = 4, 2038bf80f4bSopenharmony_ci}; 2048bf80f4bSopenharmony_ci 2058bf80f4bSopenharmony_ciusing ExtTestFlags = META_NS::SubEnumBitField<ExtTestFlagBits, TestFlags, TESTVALUE, TESTVALUE>; 2068bf80f4bSopenharmony_ci 2078bf80f4bSopenharmony_ci/** 2088bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 2098bf80f4bSopenharmony_ci * @tc.desc: test Value function 2108bf80f4bSopenharmony_ci * @tc.type: FUNC 2118bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2128bf80f4bSopenharmony_ci */ 2138bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Value, TestSize.Level1) 2148bf80f4bSopenharmony_ci{ 2158bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 2168bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 2178bf80f4bSopenharmony_ci 2188bf80f4bSopenharmony_ci TestFlags res = base | ext; 2198bf80f4bSopenharmony_ci EXPECT_THAT(res.GetValue(), ExactBitsSet(TestFlagBits::FLAG1 | (ExtTestFlagBits::FLAG2 << 16))); 2208bf80f4bSopenharmony_ci 2218bf80f4bSopenharmony_ci ExtTestFlags sub(res); 2228bf80f4bSopenharmony_ci EXPECT_EQ(ext, sub); 2238bf80f4bSopenharmony_ci EXPECT_THAT(sub.GetValue(), ExactBitsSet(ExtTestFlagBits::FLAG2 << 16)); 2248bf80f4bSopenharmony_ci EXPECT_THAT((ExtTestFlagBits)sub, ExactBitsSet(ExtTestFlagBits::FLAG2)); 2258bf80f4bSopenharmony_ci} 2268bf80f4bSopenharmony_ci 2278bf80f4bSopenharmony_ci/** 2288bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 2298bf80f4bSopenharmony_ci * @tc.desc: test Or1 function 2308bf80f4bSopenharmony_ci * @tc.type: FUNC 2318bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2328bf80f4bSopenharmony_ci */ 2338bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Or1, TestSize.Level1) 2348bf80f4bSopenharmony_ci{ 2358bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 2368bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 2378bf80f4bSopenharmony_ci 2388bf80f4bSopenharmony_ci EXPECT_THAT(base | ext, ExactBitsSet(TestFlagBits::FLAG1 | (ExtTestFlagBits::FLAG2 << 16))); 2398bf80f4bSopenharmony_ci} 2408bf80f4bSopenharmony_ci 2418bf80f4bSopenharmony_ci/** 2428bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 2438bf80f4bSopenharmony_ci * @tc.desc: test And1 function 2448bf80f4bSopenharmony_ci * @tc.type: FUNC 2458bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2468bf80f4bSopenharmony_ci */ 2478bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, And1, TestSize.Level1) 2488bf80f4bSopenharmony_ci{ 2498bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 2508bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 2518bf80f4bSopenharmony_ci TestFlags res = base | ext; 2528bf80f4bSopenharmony_ci EXPECT_THAT(res & ext, ExactBitsSet(ExtTestFlagBits::FLAG2 << 16)); 2538bf80f4bSopenharmony_ci EXPECT_THAT(res & base, ExactBitsSet(TestFlagBits::FLAG1)); 2548bf80f4bSopenharmony_ci} 2558bf80f4bSopenharmony_ci 2568bf80f4bSopenharmony_ci/** 2578bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 2588bf80f4bSopenharmony_ci * @tc.desc: test Xor1 function 2598bf80f4bSopenharmony_ci * @tc.type: FUNC 2608bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2618bf80f4bSopenharmony_ci */ 2628bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Xor1, TestSize.Level1) 2638bf80f4bSopenharmony_ci{ 2648bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 2658bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 2668bf80f4bSopenharmony_ci TestFlags res = base | ext; 2678bf80f4bSopenharmony_ci EXPECT_THAT(res ^ ext, ExactBitsSet(TestFlagBits::FLAG1)); 2688bf80f4bSopenharmony_ci EXPECT_THAT(res ^ base, ExactBitsSet(ExtTestFlagBits::FLAG2 << 16)); 2698bf80f4bSopenharmony_ci} 2708bf80f4bSopenharmony_ci 2718bf80f4bSopenharmony_ci/** 2728bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 2738bf80f4bSopenharmony_ci * @tc.desc: test Not1 function 2748bf80f4bSopenharmony_ci * @tc.type: FUNC 2758bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2768bf80f4bSopenharmony_ci */ 2778bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, Not1, TestSize.Level1) 2788bf80f4bSopenharmony_ci{ 2798bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 2808bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 2818bf80f4bSopenharmony_ci TestFlags res = base | ext; 2828bf80f4bSopenharmony_ci EXPECT_THAT(res & ~ext, ExactBitsSet(TestFlagBits::FLAG1)); 2838bf80f4bSopenharmony_ci EXPECT_THAT(res & ~base, ExactBitsSet(ExtTestFlagBits::FLAG2 << 16)); 2848bf80f4bSopenharmony_ci} 2858bf80f4bSopenharmony_ci 2868bf80f4bSopenharmony_ci/** 2878bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 2888bf80f4bSopenharmony_ci * @tc.desc: test SetAndClear1 function 2898bf80f4bSopenharmony_ci * @tc.type: FUNC 2908bf80f4bSopenharmony_ci * @tc.require: I7DMS1 2918bf80f4bSopenharmony_ci */ 2928bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, SetAndClear1, TestSize.Level1) 2938bf80f4bSopenharmony_ci{ 2948bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 2958bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 2968bf80f4bSopenharmony_ci 2978bf80f4bSopenharmony_ci EXPECT_FALSE(ext.IsSet(ExtTestFlagBits::FLAG1)); 2988bf80f4bSopenharmony_ci EXPECT_TRUE(ext.IsSet(ExtTestFlagBits::FLAG2)); 2998bf80f4bSopenharmony_ci ext.Set(ExtTestFlagBits::FLAG1); 3008bf80f4bSopenharmony_ci EXPECT_TRUE(ext.IsSet(ExtTestFlagBits::FLAG1)); 3018bf80f4bSopenharmony_ci ext.Clear(ExtTestFlagBits::FLAG2); 3028bf80f4bSopenharmony_ci EXPECT_FALSE(ext.IsSet(ExtTestFlagBits::FLAG2)); 3038bf80f4bSopenharmony_ci EXPECT_TRUE(ext.IsSet(ExtTestFlagBits::FLAG1)); 3048bf80f4bSopenharmony_ci 3058bf80f4bSopenharmony_ci TestFlags value = base | ext; 3068bf80f4bSopenharmony_ci EXPECT_TRUE(value.IsSet(TestFlagBits::FLAG1)); 3078bf80f4bSopenharmony_ci EXPECT_FALSE(value.IsSet(TestFlagBits::FLAG2)); 3088bf80f4bSopenharmony_ci value.Clear(TestFlagBits::FLAG1); 3098bf80f4bSopenharmony_ci ExtTestFlags ext2 = value; 3108bf80f4bSopenharmony_ci EXPECT_FALSE(ext2.IsSet(ExtTestFlagBits::FLAG2)); 3118bf80f4bSopenharmony_ci EXPECT_TRUE(ext2.IsSet(ExtTestFlagBits::FLAG1)); 3128bf80f4bSopenharmony_ci} 3138bf80f4bSopenharmony_ci 3148bf80f4bSopenharmony_ci/** 3158bf80f4bSopenharmony_ci * @tc.name: BitfieldPropertyTest 3168bf80f4bSopenharmony_ci * @tc.desc: test SetAndClear1 function 3178bf80f4bSopenharmony_ci * @tc.type: FUNC 3188bf80f4bSopenharmony_ci * @tc.require: I7DMS1 3198bf80f4bSopenharmony_ci */ 3208bf80f4bSopenharmony_ciHWTEST_F(BitfieldPropertyTest, SetSubBits, TestSize.Level1) 3218bf80f4bSopenharmony_ci{ 3228bf80f4bSopenharmony_ci TestFlags base(TestFlagBits::FLAG1); 3238bf80f4bSopenharmony_ci ExtTestFlags ext(ExtTestFlagBits::FLAG2); 3248bf80f4bSopenharmony_ci 3258bf80f4bSopenharmony_ci base.SetSubBits(ext); 3268bf80f4bSopenharmony_ci EXPECT_TRUE(base.IsSet(TestFlagBits::FLAG1)); 3278bf80f4bSopenharmony_ci EXPECT_FALSE(base.IsSet(TestFlagBits::FLAG2)); 3288bf80f4bSopenharmony_ci 3298bf80f4bSopenharmony_ci ExtTestFlags ext2 = base; 3308bf80f4bSopenharmony_ci EXPECT_TRUE(ext2.IsSet(ExtTestFlagBits::FLAG2)); 3318bf80f4bSopenharmony_ci EXPECT_FALSE(ext2.IsSet(ExtTestFlagBits::FLAG1)); 3328bf80f4bSopenharmony_ci} 3338bf80f4bSopenharmony_ciMETA_END_NAMESPACE()