Index: components/sync/base/enum_set_unittest.cc |
diff --git a/components/sync/base/enum_set_unittest.cc b/components/sync/base/enum_set_unittest.cc |
index 8f32c7f783f2fcc9a7d6f1e7c61441c07034c9fb..1865f342f7fc79c0ccb589b902c097030584af30 100644 |
--- a/components/sync/base/enum_set_unittest.cc |
+++ b/components/sync/base/enum_set_unittest.cc |
@@ -33,6 +33,17 @@ TEST_F(EnumSetTest, ClassConstants) { |
EXPECT_EQ(static_cast<size_t>(5), TestEnumSet::kValueCount); |
} |
+// Use static_assert to check that functions we expect to be compile time |
+// evaluatable are really that way. |
+TEST_F(EnumSetTest, ConstexprsAreValid) { |
+ static_assert(TestEnumSet::All().Has(TEST_1), |
+ "expected All() to be integral constant expression"); |
+ static_assert(TestEnumSet::FromRange(TEST_1, TEST_3).Has(TEST_1), |
+ "expected FromRange() to be integral constant expression"); |
+ static_assert(TestEnumSet(TEST_1).Has(TEST_1), |
+ "expected TestEnumSet() to be integral constant expression"); |
+} |
+ |
TEST_F(EnumSetTest, DefaultConstructor) { |
const TestEnumSet enums; |
EXPECT_TRUE(enums.Empty()); |
@@ -98,6 +109,12 @@ TEST_F(EnumSetTest, FromRange) { |
TestEnumSet::FromRange(TEST_1, TEST_3)); |
EXPECT_EQ(TestEnumSet::All(), TestEnumSet::FromRange(TEST_0, TEST_4)); |
EXPECT_EQ(TestEnumSet(TEST_1), TestEnumSet::FromRange(TEST_1, TEST_1)); |
+ |
+ using RestrictedRangeSet = EnumSet<TestEnum, TEST_1, TEST_MAX>; |
+ EXPECT_EQ(RestrictedRangeSet(TEST_1, TEST_2, TEST_3), |
+ RestrictedRangeSet::FromRange(TEST_1, TEST_3)); |
+ EXPECT_EQ(RestrictedRangeSet::All(), |
+ RestrictedRangeSet::FromRange(TEST_1, TEST_4)); |
} |
TEST_F(EnumSetTest, Put) { |