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

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

Issue 2842373004: [sync] Purge directory data when migrating to USS (Closed)
Patch Set: [sync] Add constexpr to EnumSet Created 3 years, 7 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 24 matching lines...) Expand all
70 const TestEnumSet enums(TEST_3, TEST_1, TEST_0); 81 const TestEnumSet enums(TEST_3, TEST_1, TEST_0);
71 EXPECT_FALSE(enums.Empty()); 82 EXPECT_FALSE(enums.Empty());
72 EXPECT_EQ(static_cast<size_t>(3), enums.Size()); 83 EXPECT_EQ(static_cast<size_t>(3), enums.Size());
73 EXPECT_TRUE(enums.Has(TEST_0)); 84 EXPECT_TRUE(enums.Has(TEST_0));
74 EXPECT_TRUE(enums.Has(TEST_1)); 85 EXPECT_TRUE(enums.Has(TEST_1));
75 EXPECT_FALSE(enums.Has(TEST_2)); 86 EXPECT_FALSE(enums.Has(TEST_2));
76 EXPECT_TRUE(enums.Has(TEST_3)); 87 EXPECT_TRUE(enums.Has(TEST_3));
77 EXPECT_FALSE(enums.Has(TEST_4)); 88 EXPECT_FALSE(enums.Has(TEST_4));
78 } 89 }
79 90
91 TEST_F(EnumSetTest, InitializerListConstructor) {
92 const TestEnumSet enums_empty({});
93 EXPECT_TRUE(enums_empty.Empty());
94
95 const TestEnumSet enums_single({TEST_1});
96 EXPECT_FALSE(enums_single.Empty());
97 EXPECT_EQ(static_cast<size_t>(1), enums_single.Size());
98 EXPECT_TRUE(enums_single.Has(TEST_1));
99
100 const TestEnumSet enums_multiple_non_overlapping({TEST_0, TEST_2, TEST_4});
101 EXPECT_FALSE(enums_multiple_non_overlapping.Empty());
102 EXPECT_EQ(static_cast<size_t>(3), enums_multiple_non_overlapping.Size());
103 EXPECT_TRUE(enums_multiple_non_overlapping.Has(TEST_0));
104 EXPECT_TRUE(enums_multiple_non_overlapping.Has(TEST_2));
105 EXPECT_TRUE(enums_multiple_non_overlapping.Has(TEST_4));
106 }
107
80 TEST_F(EnumSetTest, DuplicatesInConstructor) { 108 TEST_F(EnumSetTest, DuplicatesInConstructor) {
81 EXPECT_EQ(TestEnumSet(TEST_3, TEST_1, TEST_0, TEST_3, TEST_1, TEST_3), 109 EXPECT_EQ(TestEnumSet(TEST_3, TEST_1, TEST_0, TEST_3, TEST_1, TEST_3),
82 TestEnumSet(TEST_0, TEST_1, TEST_3)); 110 TestEnumSet(TEST_0, TEST_1, TEST_3));
83 } 111 }
84 112
85 TEST_F(EnumSetTest, All) { 113 TEST_F(EnumSetTest, All) {
86 const TestEnumSet enums(TestEnumSet::All()); 114 const TestEnumSet enums(TestEnumSet::All());
87 EXPECT_FALSE(enums.Empty()); 115 EXPECT_FALSE(enums.Empty());
88 EXPECT_EQ(static_cast<size_t>(5), enums.Size()); 116 EXPECT_EQ(static_cast<size_t>(5), enums.Size());
89 EXPECT_TRUE(enums.Has(TEST_0)); 117 EXPECT_TRUE(enums.Has(TEST_0));
90 EXPECT_TRUE(enums.Has(TEST_1)); 118 EXPECT_TRUE(enums.Has(TEST_1));
91 EXPECT_TRUE(enums.Has(TEST_2)); 119 EXPECT_TRUE(enums.Has(TEST_2));
92 EXPECT_TRUE(enums.Has(TEST_3)); 120 EXPECT_TRUE(enums.Has(TEST_3));
93 EXPECT_TRUE(enums.Has(TEST_4)); 121 EXPECT_TRUE(enums.Has(TEST_4));
94 } 122 }
95 123
96 TEST_F(EnumSetTest, FromRange) { 124 TEST_F(EnumSetTest, FromRange) {
97 EXPECT_EQ(TestEnumSet(TEST_1, TEST_2, TEST_3), 125 EXPECT_EQ(TestEnumSet(TEST_1, TEST_2, TEST_3),
98 TestEnumSet::FromRange(TEST_1, TEST_3)); 126 TestEnumSet::FromRange(TEST_1, TEST_3));
99 EXPECT_EQ(TestEnumSet::All(), TestEnumSet::FromRange(TEST_0, TEST_4)); 127 EXPECT_EQ(TestEnumSet::All(), TestEnumSet::FromRange(TEST_0, TEST_4));
100 EXPECT_EQ(TestEnumSet(TEST_1), TestEnumSet::FromRange(TEST_1, TEST_1)); 128 EXPECT_EQ(TestEnumSet(TEST_1), TestEnumSet::FromRange(TEST_1, TEST_1));
129
130 using RestrictedRangeSet = EnumSet<TestEnum, TEST_1, TEST_MAX>;
131 EXPECT_EQ(RestrictedRangeSet(TEST_1, TEST_2, TEST_3),
132 RestrictedRangeSet::FromRange(TEST_1, TEST_3));
133 EXPECT_EQ(RestrictedRangeSet::All(),
134 RestrictedRangeSet::FromRange(TEST_1, TEST_4));
101 } 135 }
102 136
103 TEST_F(EnumSetTest, Put) { 137 TEST_F(EnumSetTest, Put) {
104 TestEnumSet enums(TEST_3); 138 TestEnumSet enums(TEST_3);
105 enums.Put(TEST_2); 139 enums.Put(TEST_2);
106 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3), enums); 140 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3), enums);
107 enums.Put(TEST_4); 141 enums.Put(TEST_4);
108 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3, TEST_4), enums); 142 EXPECT_EQ(TestEnumSet(TEST_2, TEST_3, TEST_4), enums);
109 } 143 }
110 144
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 TEST_F(EnumSetTest, Difference) { 239 TEST_F(EnumSetTest, Difference) {
206 const TestEnumSet enums1(TEST_3, TEST_4); 240 const TestEnumSet enums1(TEST_3, TEST_4);
207 const TestEnumSet enums2(TEST_2, TEST_3); 241 const TestEnumSet enums2(TEST_2, TEST_3);
208 const TestEnumSet enums3 = Difference(enums1, enums2); 242 const TestEnumSet enums3 = Difference(enums1, enums2);
209 243
210 EXPECT_EQ(TestEnumSet(TEST_4), enums3); 244 EXPECT_EQ(TestEnumSet(TEST_4), enums3);
211 } 245 }
212 246
213 } // namespace 247 } // namespace
214 } // namespace syncer 248 } // 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