MCPcopy Create free account
hub / github.com/catboost/catboost / TestEnum

Function TestEnum

util/generic/flags_ut.cpp:36–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34Y_UNIT_TEST_SUITE(TFlagsTest) {
35 template <class Enum>
36 void TestEnum() {
37 {
38 auto i = Enum::Test1 | Enum::Test2;
39
40 UNIT_ASSERT((std::is_same<decltype(i), TFlags<Enum>>::value));
41 UNIT_ASSERT((std::is_same<decltype(~i), TFlags<Enum>>::value));
42 UNIT_ASSERT(!(std::is_same<decltype(i), int>::value));
43 UNIT_ASSERT_VALUES_EQUAL(sizeof(Enum), sizeof(TFlags<Enum>));
44
45 UNIT_ASSERT(i.HasFlag(Enum::Test1));
46 UNIT_ASSERT(i.HasFlag(Enum::Test4) == false);
47 UNIT_ASSERT(i.HasFlags(Enum::Test1));
48 UNIT_ASSERT(i.HasFlags(Enum::Test4) == false);
49 UNIT_ASSERT(i.HasFlags(Enum::Test1 | Enum::Test4) == false);
50 UNIT_ASSERT(i.HasAnyOfFlags(Enum::Test1));
51 UNIT_ASSERT(i.HasAnyOfFlags(Enum::Test4) == false);
52 UNIT_ASSERT(i.HasAnyOfFlags(Enum::Test1 | Enum::Test4));
53
54 i |= Enum::Test4;
55 i ^= Enum::Test2;
56 UNIT_ASSERT_EQUAL(i, Enum::Test4 | Enum::Test1);
57 UNIT_ASSERT_EQUAL(i & Enum::Test1, i & ~Enum::Test4);
58 UNIT_ASSERT(i & Enum::Test4);
59 UNIT_ASSERT_UNEQUAL(i, ~i);
60 UNIT_ASSERT_EQUAL(i, ~~i);
61 }
62 {
63 auto i = Enum::Test1 | Enum::Test2;
64 i.RemoveFlag(Enum::Test1);
65 UNIT_ASSERT_EQUAL(i, TFlags<Enum>(Enum::Test2));
66 }
67 {
68 auto i = Enum::Test1 | Enum::Test2;
69 i.RemoveFlags(Enum::Test1);
70 UNIT_ASSERT_EQUAL(i, TFlags<Enum>(Enum::Test2));
71 }
72 {
73 auto i = Enum::Test1 | Enum::Test2;
74 i.RemoveFlags(Enum::Test1 | Enum::Test2);
75 UNIT_ASSERT_EQUAL(i, TFlags<Enum>());
76 }
77 }
78
79 Y_UNIT_TEST(TestFlags) {
80 TestEnum<ETestFlag1>();

Callers

nothing calls this directly

Calls 5

HasFlagMethod · 0.80
HasAnyOfFlagsMethod · 0.80
RemoveFlagMethod · 0.80
RemoveFlagsMethod · 0.80
HasFlagsMethod · 0.45

Tested by

no test coverage detected