| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/sync/base/enum_set.h" | 5 #include "components/sync/base/enum_set.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 class EnumSetTest : public ::testing::Test {}; | 27 class EnumSetTest : public ::testing::Test {}; |
| 28 | 28 |
| 29 TEST_F(EnumSetTest, ClassConstants) { | 29 TEST_F(EnumSetTest, ClassConstants) { |
| 30 TestEnumSet enums; | 30 TestEnumSet enums; |
| 31 EXPECT_EQ(TEST_MIN, TestEnumSet::kMinValue); | 31 EXPECT_EQ(TEST_MIN, TestEnumSet::kMinValue); |
| 32 EXPECT_EQ(TEST_MAX, TestEnumSet::kMaxValue); | 32 EXPECT_EQ(TEST_MAX, TestEnumSet::kMaxValue); |
| 33 EXPECT_EQ(static_cast<size_t>(5), TestEnumSet::kValueCount); | 33 EXPECT_EQ(static_cast<size_t>(5), TestEnumSet::kValueCount); |
| 34 } | 34 } |
| 35 | 35 |
| 36 // Use static_assert to check that functions we expect to be compile time |
| 37 // evaluatable are really that way. |
| 38 TEST_F(EnumSetTest, ConstexprsAreValid) { |
| 39 static_assert(TestEnumSet::All().Has(TEST_1), |
| 40 "expected All() to be integral constant expression"); |
| 41 static_assert(TestEnumSet::FromRange(TEST_1, TEST_3).Has(TEST_1), |
| 42 "expected FromRange() to be integral constant expression"); |
| 43 static_assert(TestEnumSet(TEST_1).Has(TEST_1), |
| 44 "expected TestEnumSet() to be integral constant expression"); |
| 45 } |
| 46 |
| 36 TEST_F(EnumSetTest, DefaultConstructor) { | 47 TEST_F(EnumSetTest, DefaultConstructor) { |
| 37 const TestEnumSet enums; | 48 const TestEnumSet enums; |
| 38 EXPECT_TRUE(enums.Empty()); | 49 EXPECT_TRUE(enums.Empty()); |
| 39 EXPECT_EQ(static_cast<size_t>(0), enums.Size()); | 50 EXPECT_EQ(static_cast<size_t>(0), enums.Size()); |
| 40 EXPECT_FALSE(enums.Has(TEST_0)); | 51 EXPECT_FALSE(enums.Has(TEST_0)); |
| 41 EXPECT_FALSE(enums.Has(TEST_1)); | 52 EXPECT_FALSE(enums.Has(TEST_1)); |
| 42 EXPECT_FALSE(enums.Has(TEST_2)); | 53 EXPECT_FALSE(enums.Has(TEST_2)); |
| 43 EXPECT_FALSE(enums.Has(TEST_3)); | 54 EXPECT_FALSE(enums.Has(TEST_3)); |
| 44 EXPECT_FALSE(enums.Has(TEST_4)); | 55 EXPECT_FALSE(enums.Has(TEST_4)); |
| 45 } | 56 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 EXPECT_TRUE(enums.Has(TEST_2)); | 102 EXPECT_TRUE(enums.Has(TEST_2)); |
| 92 EXPECT_TRUE(enums.Has(TEST_3)); | 103 EXPECT_TRUE(enums.Has(TEST_3)); |
| 93 EXPECT_TRUE(enums.Has(TEST_4)); | 104 EXPECT_TRUE(enums.Has(TEST_4)); |
| 94 } | 105 } |
| 95 | 106 |
| 96 TEST_F(EnumSetTest, FromRange) { | 107 TEST_F(EnumSetTest, FromRange) { |
| 97 EXPECT_EQ(TestEnumSet(TEST_1, TEST_2, TEST_3), | 108 EXPECT_EQ(TestEnumSet(TEST_1, TEST_2, TEST_3), |
| 98 TestEnumSet::FromRange(TEST_1, TEST_3)); | 109 TestEnumSet::FromRange(TEST_1, TEST_3)); |
| 99 EXPECT_EQ(TestEnumSet::All(), TestEnumSet::FromRange(TEST_0, TEST_4)); | 110 EXPECT_EQ(TestEnumSet::All(), TestEnumSet::FromRange(TEST_0, TEST_4)); |
| 100 EXPECT_EQ(TestEnumSet(TEST_1), TestEnumSet::FromRange(TEST_1, TEST_1)); | 111 EXPECT_EQ(TestEnumSet(TEST_1), TestEnumSet::FromRange(TEST_1, TEST_1)); |
| 112 |
| 113 using RestrictedRangeSet = EnumSet<TestEnum, TEST_1, TEST_MAX>; |
| 114 EXPECT_EQ(RestrictedRangeSet(TEST_1, TEST_2, TEST_3), |
| 115 RestrictedRangeSet::FromRange(TEST_1, TEST_3)); |
| 116 EXPECT_EQ(RestrictedRangeSet::All(), |
| 117 RestrictedRangeSet::FromRange(TEST_1, TEST_4)); |
| 101 } | 118 } |
| 102 | 119 |
| 103 TEST_F(EnumSetTest, Put) { | 120 TEST_F(EnumSetTest, Put) { |
| 104 TestEnumSet enums(TEST_3); | 121 TestEnumSet enums(TEST_3); |
| 105 enums.Put(TEST_2); | 122 enums.Put(TEST_2); |
| 106 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3), enums); | 123 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3), enums); |
| 107 enums.Put(TEST_4); | 124 enums.Put(TEST_4); |
| 108 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3, TEST_4), enums); | 125 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3, TEST_4), enums); |
| 109 } | 126 } |
| 110 | 127 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 TEST_F(EnumSetTest, Difference) { | 222 TEST_F(EnumSetTest, Difference) { |
| 206 const TestEnumSet enums1(TEST_3, TEST_4); | 223 const TestEnumSet enums1(TEST_3, TEST_4); |
| 207 const TestEnumSet enums2(TEST_2, TEST_3); | 224 const TestEnumSet enums2(TEST_2, TEST_3); |
| 208 const TestEnumSet enums3 = Difference(enums1, enums2); | 225 const TestEnumSet enums3 = Difference(enums1, enums2); |
| 209 | 226 |
| 210 EXPECT_EQ(TestEnumSet(TEST_4), enums3); | 227 EXPECT_EQ(TestEnumSet(TEST_4), enums3); |
| 211 } | 228 } |
| 212 | 229 |
| 213 } // namespace | 230 } // namespace |
| 214 } // namespace syncer | 231 } // namespace syncer |
| OLD | NEW |