24 Privilege::kPriv1, Privilege::kPriv2, Privilege::kPriv4,
25 Privilege::kPriv8, Privilege::kPriv16, Privilege::kPriv32,
35 constexpr Mask<Privilege> privs;
36 EXPECT_EQ(0u, privs.UncheckedValue());
37 EXPECT_FALSE(privs & Privilege::kPriv1);
38 EXPECT_FALSE(privs & Privilege::kPriv4);
39 EXPECT_FALSE(privs & Privilege::kPriv8);
40 EXPECT_FALSE(privs & kAllMask);
44 Mask<Privilege> privs = Privilege::kPriv1;
45 EXPECT_EQ(1u, privs.UncheckedValue());
46 EXPECT_TRUE(privs & Privilege::kPriv1);
47 EXPECT_FALSE(privs & Privilege::kPriv4);
48 EXPECT_FALSE(privs & Privilege::kPriv8);
49 EXPECT_TRUE(privs & kAllMask);
54 Mask<Privilege> privs = {Privilege::kPriv1, Privilege::kPriv8};
55 EXPECT_EQ(9u, privs.UncheckedValue());
56 EXPECT_TRUE(privs & Privilege::kPriv1);
57 EXPECT_FALSE(privs & Privilege::kPriv4);
58 EXPECT_TRUE(privs & Privilege::kPriv8);
59 EXPECT_TRUE(privs & kAllMask);
82 Mask<Privilege> privs = {
83 Privilege::kPriv1, Privilege::kPriv2, Privilege::kPriv4,
84 Privilege::kPriv8, Privilege::kPriv16,
86 EXPECT_EQ(31u, privs.UncheckedValue());
90 Mask<Privilege> privs = {
91 Privilege::kPriv1, Privilege::kPriv2, Privilege::kPriv4,
92 Privilege::kPriv8, Privilege::kPriv16, Privilege::kPriv32,
94 EXPECT_EQ(63u, privs.UncheckedValue());
98 Mask<Privilege> privs = {
99 Privilege::kPriv1, Privilege::kPriv2, Privilege::kPriv4,
100 Privilege::kPriv8, Privilege::kPriv16, Privilege::kPriv32,
103 EXPECT_EQ(127u, privs.UncheckedValue());
107 Mask<Privilege> privs = {
108 Privilege::kPriv1, Privilege::kPriv2, Privilege::kPriv4,
109 Privilege::kPriv8, Privilege::kPriv16, Privilege::kPriv32,
110 Privilege::kPriv64, Privilege::kPriv128,
112 EXPECT_EQ(255u, privs.UncheckedValue());
116 auto privs = Mask<Privilege>::FromUnderlyingUnchecked(5);
117 EXPECT_EQ(5u, privs.UncheckedValue());
118 EXPECT_TRUE(privs & Privilege::kPriv1);
119 EXPECT_TRUE(privs & Privilege::kPriv4);
120 EXPECT_FALSE(privs & Privilege::kPriv8);
134 Mask<Privilege> source = {Privilege::kPriv1, Privilege::kPriv8};
135 Mask<Privilege> or_result =
136 source | Mask<Privilege>{Privilege::kPriv1, Privilege::kPriv4};
137 Mask<Privilege> and_result =
138 source & Mask<Privilege>{Privilege::kPriv1, Privilege::kPriv4};
139 EXPECT_EQ(13u, or_result.UncheckedValue());
140 EXPECT_EQ(1u, and_result.UncheckedValue());
144 Mask<Privilege> source_or = {Privilege::kPriv1, Privilege::kPriv8};
145 Mask<Privilege> source_and = {Privilege::kPriv1, Privilege::kPriv8};
146 source_or |= {Privilege::kPriv1, Privilege::kPriv4};
147 source_and &= {Privilege::kPriv1, Privilege::kPriv4};
148 EXPECT_EQ(13u, source_or.UncheckedValue());
149 EXPECT_EQ(1u, source_and.UncheckedValue());
159 Mask<Privilege> source = {
164 Mask<Privilege> passes = {Privilege::kPriv1, Privilege::kPriv64};
165 Mask<Privilege> fails = {Privilege::kPriv1, Privilege::kPriv32};
166 EXPECT_TRUE(source.TestAll(passes));
167 EXPECT_FALSE(source.TestAll(fails));