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

Side by Side Diff: chrome/browser/sync/util/enum_set_unittest.cc

Issue 8772073: [Sync] Add new EnumSet class representing a set of enum values (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 9 years 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/util/enum_set.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync/util/enum_set.h"
6
7 #include "base/basictypes.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace browser_sync {
11 namespace {
12
13 enum TestEnum {
14 TEST_0,
15 TEST_MIN = TEST_0,
16 TEST_1,
17 TEST_2,
18 TEST_3,
19 TEST_4,
20 TEST_MAX = TEST_4,
21 };
22
23 typedef EnumSet<TestEnum, TEST_MIN, TEST_MAX> TestEnumSet;
24
25 class EnumSetTest : public ::testing::Test {};
26
27 TEST_F(EnumSetTest, ClassConstants) {
28 TestEnumSet enums;
29 EXPECT_EQ(TEST_MIN, TestEnumSet::kMinValue);
30 EXPECT_EQ(TEST_MAX, TestEnumSet::kMaxValue);
31 EXPECT_EQ(static_cast<size_t>(5), TestEnumSet::kValueCount);
32 }
33
34 TEST_F(EnumSetTest, DefaultConstructor) {
35 const TestEnumSet enums;
36 EXPECT_TRUE(enums.Empty());
37 EXPECT_EQ(static_cast<size_t>(0), enums.Size());
38 EXPECT_FALSE(enums.Has(TEST_0));
39 EXPECT_FALSE(enums.Has(TEST_1));
40 EXPECT_FALSE(enums.Has(TEST_2));
41 EXPECT_FALSE(enums.Has(TEST_3));
42 EXPECT_FALSE(enums.Has(TEST_4));
43 }
44
45 TEST_F(EnumSetTest, OneArgConstructor) {
46 const TestEnumSet enums(TEST_3);
47 EXPECT_FALSE(enums.Empty());
48 EXPECT_EQ(static_cast<size_t>(1), enums.Size());
49 EXPECT_FALSE(enums.Has(TEST_0));
50 EXPECT_FALSE(enums.Has(TEST_1));
51 EXPECT_FALSE(enums.Has(TEST_2));
52 EXPECT_TRUE(enums.Has(TEST_3));
53 EXPECT_FALSE(enums.Has(TEST_4));
54 }
55
56 TEST_F(EnumSetTest, TwoArgConstructor) {
57 const TestEnumSet enums(TEST_3, TEST_1);
58 EXPECT_FALSE(enums.Empty());
59 EXPECT_EQ(static_cast<size_t>(2), enums.Size());
60 EXPECT_FALSE(enums.Has(TEST_0));
61 EXPECT_TRUE(enums.Has(TEST_1));
62 EXPECT_FALSE(enums.Has(TEST_2));
63 EXPECT_TRUE(enums.Has(TEST_3));
64 EXPECT_FALSE(enums.Has(TEST_4));
65 }
66
67 TEST_F(EnumSetTest, ThreeArgConstructor) {
68 const TestEnumSet enums(TEST_3, TEST_1, TEST_0);
69 EXPECT_FALSE(enums.Empty());
70 EXPECT_EQ(static_cast<size_t>(3), enums.Size());
71 EXPECT_TRUE(enums.Has(TEST_0));
72 EXPECT_TRUE(enums.Has(TEST_1));
73 EXPECT_FALSE(enums.Has(TEST_2));
74 EXPECT_TRUE(enums.Has(TEST_3));
75 EXPECT_FALSE(enums.Has(TEST_4));
76 }
77
78 TEST_F(EnumSetTest, All) {
79 const TestEnumSet enums(TestEnumSet::All());
80 EXPECT_FALSE(enums.Empty());
81 EXPECT_EQ(static_cast<size_t>(5), enums.Size());
82 EXPECT_TRUE(enums.Has(TEST_0));
83 EXPECT_TRUE(enums.Has(TEST_1));
84 EXPECT_TRUE(enums.Has(TEST_2));
85 EXPECT_TRUE(enums.Has(TEST_3));
86 EXPECT_TRUE(enums.Has(TEST_4));
87 }
88
89 TEST_F(EnumSetTest, Put) {
90 TestEnumSet enums(TEST_3);
91 enums.Put(TEST_2);
92 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_2, TEST_3)));
93 enums.Put(TEST_4);
94 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_2, TEST_3, TEST_4)));
95 }
96
97 TEST_F(EnumSetTest, PutAll) {
98 TestEnumSet enums(TEST_3, TEST_4);
99 enums.PutAll(TestEnumSet(TEST_2, TEST_3));
100 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_2, TEST_3, TEST_4)));
101 }
102
103 TEST_F(EnumSetTest, RetainAll) {
104 TestEnumSet enums(TEST_3, TEST_4);
105 enums.RetainAll(TestEnumSet(TEST_2, TEST_3));
106 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_3)));
107 }
108
109 TEST_F(EnumSetTest, Remove) {
110 TestEnumSet enums(TEST_3, TEST_4);
111 enums.Remove(TEST_2);
112 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_3, TEST_4)));
113 enums.Remove(TEST_3);
114 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_4)));
115 enums.Remove(TEST_4);
116 EXPECT_TRUE(enums.Empty());
117 }
118
119 TEST_F(EnumSetTest, RemoveAll) {
120 TestEnumSet enums(TEST_3, TEST_4);
121 enums.RemoveAll(TestEnumSet(TEST_2, TEST_3));
122 EXPECT_TRUE(enums.Equals(TestEnumSet(TEST_4)));
123 }
124
125 TEST_F(EnumSetTest, Clear) {
126 TestEnumSet enums(TEST_3, TEST_4);
127 enums.Clear();
128 EXPECT_TRUE(enums.Empty());
129 }
130
131 TEST_F(EnumSetTest, Has) {
132 const TestEnumSet enums(TEST_3, TEST_4);
133 EXPECT_FALSE(enums.Has(TEST_1));
134 EXPECT_FALSE(enums.Has(TEST_2));
135 EXPECT_TRUE(enums.Has(TEST_3));
136 EXPECT_TRUE(enums.Has(TEST_4));
137 }
138
139 TEST_F(EnumSetTest, HasAll) {
140 const TestEnumSet enums1(TEST_3, TEST_4);
141 const TestEnumSet enums2(TEST_2, TEST_3);
142 const TestEnumSet enums3 = Union(enums1, enums2);
143 EXPECT_TRUE(enums1.HasAll(enums1));
144 EXPECT_FALSE(enums1.HasAll(enums2));
145 EXPECT_FALSE(enums1.HasAll(enums3));
146
147 EXPECT_FALSE(enums2.HasAll(enums1));
148 EXPECT_TRUE(enums2.HasAll(enums2));
149 EXPECT_FALSE(enums2.HasAll(enums3));
150
151 EXPECT_TRUE(enums3.HasAll(enums1));
152 EXPECT_TRUE(enums3.HasAll(enums2));
153 EXPECT_TRUE(enums3.HasAll(enums3));
154 }
155
156 TEST_F(EnumSetTest, Iterators) {
157 const TestEnumSet enums1(TEST_3, TEST_4);
158 TestEnumSet enums2;
159 for (TestEnumSet::Iterator it = enums1.First(); it.Good(); it.Inc()) {
160 enums2.Put(it.Get());
161 }
162 EXPECT_TRUE(enums1.Equals(enums2));
163 }
164
165 TEST_F(EnumSetTest, Union) {
166 const TestEnumSet enums1(TEST_3, TEST_4);
167 const TestEnumSet enums2(TEST_2, TEST_3);
168 const TestEnumSet enums3 = Union(enums1, enums2);
169
170 EXPECT_TRUE(enums3.Equals(TestEnumSet(TEST_2, TEST_3, TEST_4)));
171 }
172
173 TEST_F(EnumSetTest, Intersection) {
174 const TestEnumSet enums1(TEST_3, TEST_4);
175 const TestEnumSet enums2(TEST_2, TEST_3);
176 const TestEnumSet enums3 = Intersection(enums1, enums2);
177
178 EXPECT_TRUE(enums3.Equals(TestEnumSet(TEST_3)));
179 }
180
181 TEST_F(EnumSetTest, Difference) {
182 const TestEnumSet enums1(TEST_3, TEST_4);
183 const TestEnumSet enums2(TEST_2, TEST_3);
184 const TestEnumSet enums3 = Difference(enums1, enums2);
185
186 EXPECT_TRUE(enums3.Equals(TestEnumSet(TEST_4)));
187 }
188
189 } // namespace
190 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/util/enum_set.h ('k') | chrome/chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698