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

Side by Side Diff: chrome/common/string_ordinal_unittest.cc

Issue 10920017: [Sync] Generalize StringOrdinal to handle ordinal_in_parent field (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Relax tests Created 8 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/common/string_ordinal.cc ('k') | sync/api/string_ordinal.h » ('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) 2012 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/common/string_ordinal.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7
8 #include <algorithm>
9
10 namespace {
11
12 TEST(StringOrdinalTest, IsValid) {
13 EXPECT_TRUE(StringOrdinal("b").IsValid());
14 EXPECT_TRUE(StringOrdinal("ab").IsValid());
15
16 EXPECT_FALSE(StringOrdinal("aa").IsValid());
17 EXPECT_FALSE(StringOrdinal().IsValid());
18 }
19
20 TEST(StringOrdinalTest, LessThan) {
21 StringOrdinal small_value("b");
22 StringOrdinal middle_value("n");
23 StringOrdinal big_value("z");
24
25 EXPECT_TRUE(small_value.LessThan(middle_value));
26 EXPECT_TRUE(small_value.LessThan(big_value));
27 EXPECT_TRUE(middle_value.LessThan(big_value));
28
29 EXPECT_FALSE(big_value.LessThan(small_value));
30 EXPECT_FALSE(big_value.LessThan(middle_value));
31 EXPECT_FALSE(middle_value.LessThan(small_value));
32 }
33
34 TEST(StringOrdinalTest, GreaterThan) {
35 StringOrdinal small_value("b");
36 StringOrdinal middle_value("n");
37 StringOrdinal big_value("z");
38
39 EXPECT_TRUE(big_value.GreaterThan(small_value));
40 EXPECT_TRUE(big_value.GreaterThan(middle_value));
41 EXPECT_TRUE(middle_value.GreaterThan(small_value));
42
43
44 EXPECT_FALSE(small_value.GreaterThan(middle_value));
45 EXPECT_FALSE(small_value.GreaterThan(big_value));
46 EXPECT_FALSE(middle_value.GreaterThan(big_value));
47 }
48
49 // Tests the CreateBetween StringOrdinal function by calling
50 // on the small_value with the large_value as the parameter and
51 // vice-versa.
52 void TestCreateBetween(StringOrdinal small_value,
53 StringOrdinal large_value,
54 const std::string& expected_result) {
55 StringOrdinal result = small_value.CreateBetween(large_value);
56 EXPECT_EQ(expected_result, result.ToString());
57
58 result = large_value.CreateBetween(small_value);
59 EXPECT_EQ(expected_result, result.ToString());
60 }
61
62 TEST(StringOrdinalTest, CreateBetweenSingleDigit) {
63 TestCreateBetween(StringOrdinal("b"), StringOrdinal("d"), "c");
64 TestCreateBetween(StringOrdinal("b"), StringOrdinal("e"), "c");
65 TestCreateBetween(StringOrdinal("b"), StringOrdinal("f"), "d");
66 TestCreateBetween(StringOrdinal("c"), StringOrdinal("d"), "cn");
67 }
68
69 TEST(StringOrdinalTest, CreateBetweenDifferentLengths) {
70 TestCreateBetween(StringOrdinal("b"), StringOrdinal("bb"), "ban");
71 TestCreateBetween(StringOrdinal("b"), StringOrdinal("db"), "c");
72 TestCreateBetween(StringOrdinal("bz"), StringOrdinal("c"), "bzn");
73 TestCreateBetween(StringOrdinal("baaaaaab"), StringOrdinal("d"), "c");
74 TestCreateBetween(StringOrdinal("baaaaaac"), StringOrdinal("d"), "c");
75 TestCreateBetween(StringOrdinal("b"), StringOrdinal("daaaaaaab"), "c");
76 }
77
78 TEST(StringOrdinalTest, CreateBetweenOverflow) {
79 TestCreateBetween(StringOrdinal("ab"), StringOrdinal("bb"), "ao");
80 TestCreateBetween(StringOrdinal("bb"), StringOrdinal("cb"), "bo");
81 TestCreateBetween(StringOrdinal("bbb"), StringOrdinal("bcb"), "bbo");
82 TestCreateBetween(StringOrdinal("aab"), StringOrdinal("zzz"), "n");
83 TestCreateBetween(StringOrdinal("yyy"), StringOrdinal("zzz"), "zml");
84 TestCreateBetween(StringOrdinal("yab"), StringOrdinal("zzz"), "z");
85 TestCreateBetween(StringOrdinal("aaz"), StringOrdinal("zzz"), "n");
86 TestCreateBetween(StringOrdinal("nnnnz"), StringOrdinal("mmmmz"), "n");
87 }
88
89 TEST(StringOrdinalTest, CreateAfter) {
90 StringOrdinal result = StringOrdinal("y").CreateAfter();
91 EXPECT_EQ("yn", result.ToString());
92
93 result = StringOrdinal("zy").CreateAfter();
94 EXPECT_EQ("zyn", result.ToString());
95
96 result = StringOrdinal("zzzy").CreateAfter();
97 EXPECT_EQ("zzzyn", result.ToString());
98
99 result = StringOrdinal("yy").CreateAfter();
100 EXPECT_EQ("zl", result.ToString());
101
102 result = StringOrdinal("yz").CreateAfter();
103 EXPECT_EQ("z", result.ToString());
104
105 result = StringOrdinal("z").CreateAfter();
106 EXPECT_EQ("zm", result.ToString());
107 }
108
109 TEST(StringOrdinalTest, CreateBefore) {
110 StringOrdinal result = StringOrdinal("b").CreateBefore();
111 EXPECT_EQ("an", result.ToString());
112
113 result = StringOrdinal("bb").CreateBefore();
114 EXPECT_EQ("ao", result.ToString());
115
116 result = StringOrdinal("bc").CreateBefore();
117 EXPECT_EQ("ao", result.ToString());
118
119 result = StringOrdinal("bd").CreateBefore();
120 EXPECT_EQ("ap", result.ToString());
121 }
122
123 TEST(StringOrdinalTest, ToString) {
124 StringOrdinal index("b");
125 EXPECT_EQ(index.ToString(), "b");
126
127 index = StringOrdinal("aab");
128 EXPECT_EQ(index.ToString(), "aab");
129
130 index = StringOrdinal("zzz");
131 EXPECT_EQ(index.ToString(), "zzz");
132 }
133
134 TEST(StringOrdinalTest, StdSort) {
135 std::vector<StringOrdinal> ordinals;
136
137 ordinals.push_back(StringOrdinal("z"));
138 ordinals.push_back(StringOrdinal("n"));
139 ordinals.push_back(StringOrdinal("j"));
140 ordinals.push_back(StringOrdinal("b"));
141
142 std::sort(ordinals.begin(), ordinals.end(), StringOrdinalLessThan());
143
144 EXPECT_EQ(ordinals[0].ToString(), "b");
145 EXPECT_EQ(ordinals[1].ToString(), "j");
146 EXPECT_EQ(ordinals[2].ToString(), "n");
147 EXPECT_EQ(ordinals[3].ToString(), "z");
148 }
149
150 TEST(StringOrdinalTest, StdFind) {
151 std::vector<StringOrdinal> ordinals;
152
153 StringOrdinal b("b");
154 ordinals.push_back(b);
155 ordinals.push_back(StringOrdinal("z"));
156
157 EXPECT_EQ(std::find(ordinals.begin(), ordinals.end(), b), ordinals.begin());
158 EXPECT_EQ(std::find(ordinals.begin(), ordinals.end(), StringOrdinal("z")),
159 ordinals.begin() + 1);
160 EXPECT_EQ(std::find(ordinals.begin(), ordinals.end(), StringOrdinal("n")),
161 ordinals.end());
162 }
163
164 TEST(StringOrdinalTest, EqualOrBothInvalid) {
165 StringOrdinal valid = StringOrdinal::CreateInitialOrdinal();
166 StringOrdinal invalid;
167
168 EXPECT_TRUE(valid.EqualOrBothInvalid(valid));
169 EXPECT_TRUE(invalid.EqualOrBothInvalid(invalid));
170
171 EXPECT_FALSE(invalid.EqualOrBothInvalid(valid));
172 }
173
174 } // namespace
OLDNEW
« no previous file with comments | « chrome/common/string_ordinal.cc ('k') | sync/api/string_ordinal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698