Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(519)

Side by Side Diff: components/sync/base/enum_set_unittest.cc

Issue 2859033002: [sync] Add constexpr to EnumSet (Closed)
Patch Set: Move reading list switches and buildflag to /features Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/sync/base/enum_set.h ('k') | components/sync/base/model_type.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « components/sync/base/enum_set.h ('k') | components/sync/base/model_type.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698