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

Side by Side Diff: content/browser/indexed_db/indexed_db_leveldb_coding_unittest.cc

Issue 18075008: IndexedDB: Switch key/value handling from vector<char> to std::string (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/browser/indexed_db/indexed_db_leveldb_coding.h" 5 #include "content/browser/indexed_db/indexed_db_leveldb_coding.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string>
alecflett 2013/07/09 18:26:30 I think you still want <string> here, no?
jsbell 2013/07/09 19:41:46 Per pkasting on IRC: "Per the style guide, foo_uni
9 #include <vector> 8 #include <vector>
10 9
11 #include "base/basictypes.h" 10 #include "base/basictypes.h"
12 #include "base/strings/string16.h" 11 #include "base/strings/string16.h"
13 #include "base/strings/string_piece.h" 12 #include "base/strings/string_piece.h"
14 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
15 #include "content/browser/indexed_db/leveldb/leveldb_slice.h"
16 #include "content/common/indexed_db/indexed_db_key.h" 14 #include "content/common/indexed_db/indexed_db_key.h"
17 #include "content/common/indexed_db/indexed_db_key_path.h" 15 #include "content/common/indexed_db/indexed_db_key_path.h"
18 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
19 17
20 using base::StringPiece; 18 using base::StringPiece;
21 using WebKit::WebIDBKey; 19 using WebKit::WebIDBKey;
22 using WebKit::WebIDBKeyPath; 20 using WebKit::WebIDBKeyPath;
23 21
24 namespace content { 22 namespace content {
25 23
(...skipping 10 matching lines...) Expand all
36 } 34 }
37 35
38 static IndexedDBKey CreateArrayIDBKey(const IndexedDBKey& key1, 36 static IndexedDBKey CreateArrayIDBKey(const IndexedDBKey& key1,
39 const IndexedDBKey& key2) { 37 const IndexedDBKey& key2) {
40 IndexedDBKey::KeyArray array; 38 IndexedDBKey::KeyArray array;
41 array.push_back(key1); 39 array.push_back(key1);
42 array.push_back(key2); 40 array.push_back(key2);
43 return IndexedDBKey(array); 41 return IndexedDBKey(array);
44 } 42 }
45 43
46 static std::vector<char> WrappedEncodeByte(char value) { 44 static std::string WrappedEncodeByte(char value) {
47 std::vector<char> buffer; 45 std::string buffer;
48 EncodeByte(value, &buffer); 46 EncodeByte(value, &buffer);
49 return buffer; 47 return buffer;
50 } 48 }
51 49
52 TEST(IndexedDBLevelDBCodingTest, EncodeByte) { 50 TEST(IndexedDBLevelDBCodingTest, EncodeByte) {
53 std::vector<char> expected; 51 std::string expected;
54 expected.push_back(0); 52 expected.push_back(0);
55 unsigned char c; 53 unsigned char c;
56 54
57 c = 0; 55 c = 0;
58 expected[0] = c; 56 expected[0] = c;
59 EXPECT_EQ(expected, WrappedEncodeByte(c)); 57 EXPECT_EQ(expected, WrappedEncodeByte(c));
60 58
61 c = 1; 59 c = 1;
62 expected[0] = c; 60 expected[0] = c;
63 EXPECT_EQ(expected, WrappedEncodeByte(c)); 61 EXPECT_EQ(expected, WrappedEncodeByte(c));
64 62
65 c = 255; 63 c = 255;
66 expected[0] = c; 64 expected[0] = c;
67 EXPECT_EQ(expected, WrappedEncodeByte(c)); 65 EXPECT_EQ(expected, WrappedEncodeByte(c));
68 } 66 }
69 67
70 TEST(IndexedDBLevelDBCodingTest, DecodeByte) { 68 TEST(IndexedDBLevelDBCodingTest, DecodeByte) {
71 std::vector<unsigned char> test_cases; 69 std::vector<unsigned char> test_cases;
72 test_cases.push_back(0); 70 test_cases.push_back(0);
73 test_cases.push_back(1); 71 test_cases.push_back(1);
74 test_cases.push_back(255); 72 test_cases.push_back(255);
75 73
76 for (size_t i = 0; i < test_cases.size(); ++i) { 74 for (size_t i = 0; i < test_cases.size(); ++i) {
77 unsigned char n = test_cases[i]; 75 unsigned char n = test_cases[i];
78 std::vector<char> v; 76 std::string v;
79 EncodeByte(n, &v); 77 EncodeByte(n, &v);
80 78
81 unsigned char res; 79 unsigned char res;
82 ASSERT_GT(v.size(), static_cast<size_t>(0)); 80 ASSERT_GT(v.size(), static_cast<size_t>(0));
83 StringPiece slice(&*v.begin(), v.size()); 81 StringPiece slice(&*v.begin(), v.size());
84 EXPECT_TRUE(DecodeByte(&slice, &res)); 82 EXPECT_TRUE(DecodeByte(&slice, &res));
85 EXPECT_EQ(n, res); 83 EXPECT_EQ(n, res);
86 EXPECT_TRUE(slice.empty()); 84 EXPECT_TRUE(slice.empty());
87 } 85 }
88 86
89 { 87 {
90 StringPiece slice; 88 StringPiece slice;
91 unsigned char value; 89 unsigned char value;
92 EXPECT_FALSE(DecodeByte(&slice, &value)); 90 EXPECT_FALSE(DecodeByte(&slice, &value));
93 } 91 }
94 } 92 }
95 93
96 static std::vector<char> WrappedEncodeBool(bool value) { 94 static std::string WrappedEncodeBool(bool value) {
97 std::vector<char> buffer; 95 std::string buffer;
98 EncodeBool(value, &buffer); 96 EncodeBool(value, &buffer);
99 return buffer; 97 return buffer;
100 } 98 }
101 99
102 TEST(IndexedDBLevelDBCodingTest, EncodeBool) { 100 TEST(IndexedDBLevelDBCodingTest, EncodeBool) {
103 { 101 {
104 std::vector<char> expected; 102 std::string expected;
105 expected.push_back(1); 103 expected.push_back(1);
106 EXPECT_EQ(expected, WrappedEncodeBool(true)); 104 EXPECT_EQ(expected, WrappedEncodeBool(true));
107 } 105 }
108 { 106 {
109 std::vector<char> expected; 107 std::string expected;
110 expected.push_back(0); 108 expected.push_back(0);
111 EXPECT_EQ(expected, WrappedEncodeBool(false)); 109 EXPECT_EQ(expected, WrappedEncodeBool(false));
112 } 110 }
113 } 111 }
114 112
115 static int CompareKeys(const std::vector<char>& a, const std::vector<char>& b) { 113 static int CompareKeys(const std::string& a, const std::string& b) {
116 bool ok; 114 bool ok;
117 int result = CompareEncodedIDBKeys(a, b, &ok); 115 int result = CompareEncodedIDBKeys(a, b, &ok);
118 EXPECT_TRUE(ok); 116 EXPECT_TRUE(ok);
119 return result; 117 return result;
120 } 118 }
121 119
122 TEST(IndexedDBLevelDBCodingTest, MaxIDBKey) { 120 TEST(IndexedDBLevelDBCodingTest, MaxIDBKey) {
123 std::vector<char> max_key = MaxIDBKey(); 121 std::string max_key = MaxIDBKey();
124 122
125 std::vector<char> min_key = MinIDBKey(); 123 std::string min_key = MinIDBKey();
126 std::vector<char> array_key; 124 std::string array_key;
127 EncodeIDBKey(IndexedDBKey(IndexedDBKey::KeyArray()), &array_key); 125 EncodeIDBKey(IndexedDBKey(IndexedDBKey::KeyArray()), &array_key);
128 std::vector<char> string_key; 126 std::string string_key;
129 EncodeIDBKey(IndexedDBKey(ASCIIToUTF16("Hello world")), &string_key); 127 EncodeIDBKey(IndexedDBKey(ASCIIToUTF16("Hello world")), &string_key);
130 std::vector<char> number_key; 128 std::string number_key;
131 EncodeIDBKey(IndexedDBKey(3.14, WebIDBKey::NumberType), &number_key); 129 EncodeIDBKey(IndexedDBKey(3.14, WebIDBKey::NumberType), &number_key);
132 std::vector<char> date_key; 130 std::string date_key;
133 EncodeIDBKey(IndexedDBKey(1000000, WebIDBKey::DateType), &date_key); 131 EncodeIDBKey(IndexedDBKey(1000000, WebIDBKey::DateType), &date_key);
134 132
135 EXPECT_GT(CompareKeys(max_key, min_key), 0); 133 EXPECT_GT(CompareKeys(max_key, min_key), 0);
136 EXPECT_GT(CompareKeys(max_key, array_key), 0); 134 EXPECT_GT(CompareKeys(max_key, array_key), 0);
137 EXPECT_GT(CompareKeys(max_key, string_key), 0); 135 EXPECT_GT(CompareKeys(max_key, string_key), 0);
138 EXPECT_GT(CompareKeys(max_key, number_key), 0); 136 EXPECT_GT(CompareKeys(max_key, number_key), 0);
139 EXPECT_GT(CompareKeys(max_key, date_key), 0); 137 EXPECT_GT(CompareKeys(max_key, date_key), 0);
140 } 138 }
141 139
142 TEST(IndexedDBLevelDBCodingTest, MinIDBKey) { 140 TEST(IndexedDBLevelDBCodingTest, MinIDBKey) {
143 std::vector<char> min_key = MinIDBKey(); 141 std::string min_key = MinIDBKey();
144 142
145 std::vector<char> max_key = MaxIDBKey(); 143 std::string max_key = MaxIDBKey();
146 std::vector<char> array_key; 144 std::string array_key;
147 EncodeIDBKey(IndexedDBKey(IndexedDBKey::KeyArray()), &array_key); 145 EncodeIDBKey(IndexedDBKey(IndexedDBKey::KeyArray()), &array_key);
148 std::vector<char> string_key; 146 std::string string_key;
149 EncodeIDBKey(IndexedDBKey(ASCIIToUTF16("Hello world")), &string_key); 147 EncodeIDBKey(IndexedDBKey(ASCIIToUTF16("Hello world")), &string_key);
150 std::vector<char> number_key; 148 std::string number_key;
151 EncodeIDBKey(IndexedDBKey(3.14, WebIDBKey::NumberType), &number_key); 149 EncodeIDBKey(IndexedDBKey(3.14, WebIDBKey::NumberType), &number_key);
152 std::vector<char> date_key; 150 std::string date_key;
153 EncodeIDBKey(IndexedDBKey(1000000, WebIDBKey::DateType), &date_key); 151 EncodeIDBKey(IndexedDBKey(1000000, WebIDBKey::DateType), &date_key);
154 152
155 EXPECT_LT(CompareKeys(min_key, max_key), 0); 153 EXPECT_LT(CompareKeys(min_key, max_key), 0);
156 EXPECT_LT(CompareKeys(min_key, array_key), 0); 154 EXPECT_LT(CompareKeys(min_key, array_key), 0);
157 EXPECT_LT(CompareKeys(min_key, string_key), 0); 155 EXPECT_LT(CompareKeys(min_key, string_key), 0);
158 EXPECT_LT(CompareKeys(min_key, number_key), 0); 156 EXPECT_LT(CompareKeys(min_key, number_key), 0);
159 EXPECT_LT(CompareKeys(min_key, date_key), 0); 157 EXPECT_LT(CompareKeys(min_key, date_key), 0);
160 } 158 }
161 159
162 static std::vector<char> WrappedEncodeInt(int64 value) { 160 static std::string WrappedEncodeInt(int64 value) {
163 std::vector<char> buffer; 161 std::string buffer;
164 EncodeInt(value, &buffer); 162 EncodeInt(value, &buffer);
165 return buffer; 163 return buffer;
166 } 164 }
167 165
168 TEST(IndexedDBLevelDBCodingTest, EncodeInt) { 166 TEST(IndexedDBLevelDBCodingTest, EncodeInt) {
169 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(0).size()); 167 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(0).size());
170 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(1).size()); 168 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(1).size());
171 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(255).size()); 169 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeInt(255).size());
172 EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeInt(256).size()); 170 EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeInt(256).size());
173 EXPECT_EQ(static_cast<size_t>(4), WrappedEncodeInt(0xffffffff).size()); 171 EXPECT_EQ(static_cast<size_t>(4), WrappedEncodeInt(0xffffffff).size());
174 #ifdef NDEBUG 172 #ifdef NDEBUG
175 EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeInt(-1).size()); 173 EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeInt(-1).size());
176 #endif 174 #endif
177 } 175 }
178 176
179 TEST(IndexedDBLevelDBCodingTest, DecodeBool) { 177 TEST(IndexedDBLevelDBCodingTest, DecodeBool) {
180 { 178 {
181 std::vector<char> encoded; 179 std::string encoded;
182 encoded.push_back(1); 180 encoded.push_back(1);
183 StringPiece slice(&*encoded.begin(), encoded.size()); 181 StringPiece slice(&*encoded.begin(), encoded.size());
184 bool value; 182 bool value;
185 EXPECT_TRUE(DecodeBool(&slice, &value)); 183 EXPECT_TRUE(DecodeBool(&slice, &value));
186 EXPECT_TRUE(value); 184 EXPECT_TRUE(value);
187 EXPECT_TRUE(slice.empty()); 185 EXPECT_TRUE(slice.empty());
188 } 186 }
189 { 187 {
190 std::vector<char> encoded; 188 std::string encoded;
191 encoded.push_back(0); 189 encoded.push_back(0);
192 StringPiece slice(&*encoded.begin(), encoded.size()); 190 StringPiece slice(&*encoded.begin(), encoded.size());
193 bool value; 191 bool value;
194 EXPECT_TRUE(DecodeBool(&slice, &value)); 192 EXPECT_TRUE(DecodeBool(&slice, &value));
195 EXPECT_FALSE(value); 193 EXPECT_FALSE(value);
196 EXPECT_TRUE(slice.empty()); 194 EXPECT_TRUE(slice.empty());
197 } 195 }
198 { 196 {
199 StringPiece slice; 197 StringPiece slice;
200 bool value; 198 bool value;
(...skipping 10 matching lines...) Expand all
211 test_cases.push_back(65535); 209 test_cases.push_back(65535);
212 test_cases.push_back(655536); 210 test_cases.push_back(655536);
213 test_cases.push_back(7711192431755665792ll); 211 test_cases.push_back(7711192431755665792ll);
214 test_cases.push_back(0x7fffffffffffffffll); 212 test_cases.push_back(0x7fffffffffffffffll);
215 #ifdef NDEBUG 213 #ifdef NDEBUG
216 test_cases.push_back(-3); 214 test_cases.push_back(-3);
217 #endif 215 #endif
218 216
219 for (size_t i = 0; i < test_cases.size(); ++i) { 217 for (size_t i = 0; i < test_cases.size(); ++i) {
220 int64 n = test_cases[i]; 218 int64 n = test_cases[i];
221 std::vector<char> v = WrappedEncodeInt(n); 219 std::string v = WrappedEncodeInt(n);
222 ASSERT_GT(v.size(), static_cast<size_t>(0)); 220 ASSERT_GT(v.size(), static_cast<size_t>(0));
223 StringPiece slice(&*v.begin(), v.size()); 221 StringPiece slice(&*v.begin(), v.size());
224 int64 value; 222 int64 value;
225 EXPECT_TRUE(DecodeInt(&slice, &value)); 223 EXPECT_TRUE(DecodeInt(&slice, &value));
226 EXPECT_EQ(n, value); 224 EXPECT_EQ(n, value);
227 EXPECT_TRUE(slice.empty()); 225 EXPECT_TRUE(slice.empty());
228 226
229 // Verify decoding at an offset, to detect unaligned memory access. 227 // Verify decoding at an offset, to detect unaligned memory access.
230 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0)); 228 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
231 slice = StringPiece(&*v.begin() + 1, v.size() - 1); 229 slice = StringPiece(&*v.begin() + 1, v.size() - 1);
232 EXPECT_TRUE(DecodeInt(&slice, &value)); 230 EXPECT_TRUE(DecodeInt(&slice, &value));
233 EXPECT_EQ(n, value); 231 EXPECT_EQ(n, value);
234 EXPECT_TRUE(slice.empty()); 232 EXPECT_TRUE(slice.empty());
235 } 233 }
236 { 234 {
237 StringPiece slice; 235 StringPiece slice;
238 int64 value; 236 int64 value;
239 EXPECT_FALSE(DecodeInt(&slice, &value)); 237 EXPECT_FALSE(DecodeInt(&slice, &value));
240 } 238 }
241 } 239 }
242 240
243 static std::vector<char> WrappedEncodeVarInt(int64 value) { 241 static std::string WrappedEncodeVarInt(int64 value) {
244 std::vector<char> buffer; 242 std::string buffer;
245 EncodeVarInt(value, &buffer); 243 EncodeVarInt(value, &buffer);
246 return buffer; 244 return buffer;
247 } 245 }
248 246
249 TEST(IndexedDBLevelDBCodingTest, EncodeVarInt) { 247 TEST(IndexedDBLevelDBCodingTest, EncodeVarInt) {
250 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeVarInt(0).size()); 248 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeVarInt(0).size());
251 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeVarInt(1).size()); 249 EXPECT_EQ(static_cast<size_t>(1), WrappedEncodeVarInt(1).size());
252 EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeVarInt(255).size()); 250 EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeVarInt(255).size());
253 EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeVarInt(256).size()); 251 EXPECT_EQ(static_cast<size_t>(2), WrappedEncodeVarInt(256).size());
254 EXPECT_EQ(static_cast<size_t>(5), WrappedEncodeVarInt(0xffffffff).size()); 252 EXPECT_EQ(static_cast<size_t>(5), WrappedEncodeVarInt(0xffffffff).size());
(...skipping 15 matching lines...) Expand all
270 test_cases.push_back(65535); 268 test_cases.push_back(65535);
271 test_cases.push_back(655536); 269 test_cases.push_back(655536);
272 test_cases.push_back(7711192431755665792ll); 270 test_cases.push_back(7711192431755665792ll);
273 test_cases.push_back(0x7fffffffffffffffll); 271 test_cases.push_back(0x7fffffffffffffffll);
274 #ifdef NDEBUG 272 #ifdef NDEBUG
275 test_cases.push_back(-3); 273 test_cases.push_back(-3);
276 #endif 274 #endif
277 275
278 for (size_t i = 0; i < test_cases.size(); ++i) { 276 for (size_t i = 0; i < test_cases.size(); ++i) {
279 int64 n = test_cases[i]; 277 int64 n = test_cases[i];
280 std::vector<char> v = WrappedEncodeVarInt(n); 278 std::string v = WrappedEncodeVarInt(n);
281 ASSERT_GT(v.size(), static_cast<size_t>(0)); 279 ASSERT_GT(v.size(), static_cast<size_t>(0));
282 StringPiece slice(&*v.begin(), v.size()); 280 StringPiece slice(&*v.begin(), v.size());
283 int64 res; 281 int64 res;
284 EXPECT_TRUE(DecodeVarInt(&slice, &res)); 282 EXPECT_TRUE(DecodeVarInt(&slice, &res));
285 EXPECT_EQ(n, res); 283 EXPECT_EQ(n, res);
286 EXPECT_TRUE(slice.empty()); 284 EXPECT_TRUE(slice.empty());
287 285
288 slice = StringPiece(&*v.begin(), v.size() - 1); 286 slice = StringPiece(&*v.begin(), v.size() - 1);
289 EXPECT_FALSE(DecodeVarInt(&slice, &res)); 287 EXPECT_FALSE(DecodeVarInt(&slice, &res));
290 288
291 slice = StringPiece(&*v.begin(), static_cast<size_t>(0)); 289 slice = StringPiece(&*v.begin(), static_cast<size_t>(0));
292 EXPECT_FALSE(DecodeVarInt(&slice, &res)); 290 EXPECT_FALSE(DecodeVarInt(&slice, &res));
293 291
294 // Verify decoding at an offset, to detect unaligned memory access. 292 // Verify decoding at an offset, to detect unaligned memory access.
295 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0)); 293 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
296 slice = StringPiece(&*v.begin() + 1, v.size() - 1); 294 slice = StringPiece(&*v.begin() + 1, v.size() - 1);
297 EXPECT_TRUE(DecodeVarInt(&slice, &res)); 295 EXPECT_TRUE(DecodeVarInt(&slice, &res));
298 EXPECT_EQ(n, res); 296 EXPECT_EQ(n, res);
299 EXPECT_TRUE(slice.empty()); 297 EXPECT_TRUE(slice.empty());
300 } 298 }
301 } 299 }
302 300
303 static std::vector<char> WrappedEncodeString(string16 value) { 301 static std::string WrappedEncodeString(string16 value) {
304 std::vector<char> buffer; 302 std::string buffer;
305 EncodeString(value, &buffer); 303 EncodeString(value, &buffer);
306 return buffer; 304 return buffer;
307 } 305 }
308 306
309 TEST(IndexedDBLevelDBCodingTest, EncodeString) { 307 TEST(IndexedDBLevelDBCodingTest, EncodeString) {
310 const char16 test_string_a[] = {'f', 'o', 'o', '\0'}; 308 const char16 test_string_a[] = {'f', 'o', 'o', '\0'};
311 const char16 test_string_b[] = {0xdead, 0xbeef, '\0'}; 309 const char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
312 310
313 EXPECT_EQ(static_cast<size_t>(0), 311 EXPECT_EQ(static_cast<size_t>(0),
314 WrappedEncodeString(ASCIIToUTF16("")).size()); 312 WrappedEncodeString(ASCIIToUTF16("")).size());
(...skipping 13 matching lines...) Expand all
328 326
329 std::vector<string16> test_cases; 327 std::vector<string16> test_cases;
330 test_cases.push_back(string16()); 328 test_cases.push_back(string16());
331 test_cases.push_back(ASCIIToUTF16("a")); 329 test_cases.push_back(ASCIIToUTF16("a"));
332 test_cases.push_back(ASCIIToUTF16("foo")); 330 test_cases.push_back(ASCIIToUTF16("foo"));
333 test_cases.push_back(test_string_a); 331 test_cases.push_back(test_string_a);
334 test_cases.push_back(test_string_b); 332 test_cases.push_back(test_string_b);
335 333
336 for (size_t i = 0; i < test_cases.size(); ++i) { 334 for (size_t i = 0; i < test_cases.size(); ++i) {
337 const string16& test_case = test_cases[i]; 335 const string16& test_case = test_cases[i];
338 std::vector<char> v = WrappedEncodeString(test_case); 336 std::string v = WrappedEncodeString(test_case);
339 337
340 StringPiece slice; 338 StringPiece slice;
341 if (v.size()) { 339 if (v.size()) {
342 slice = StringPiece(&*v.begin(), v.size()); 340 slice = StringPiece(&*v.begin(), v.size());
343 } 341 }
344 342
345 string16 result; 343 string16 result;
346 EXPECT_TRUE(DecodeString(&slice, &result)); 344 EXPECT_TRUE(DecodeString(&slice, &result));
347 EXPECT_EQ(test_case, result); 345 EXPECT_EQ(test_case, result);
348 EXPECT_TRUE(slice.empty()); 346 EXPECT_TRUE(slice.empty());
349 347
350 // Verify decoding at an offset, to detect unaligned memory access. 348 // Verify decoding at an offset, to detect unaligned memory access.
351 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0)); 349 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
352 slice = StringPiece(&*v.begin() + 1, v.size() - 1); 350 slice = StringPiece(&*v.begin() + 1, v.size() - 1);
353 EXPECT_TRUE(DecodeString(&slice, &result)); 351 EXPECT_TRUE(DecodeString(&slice, &result));
354 EXPECT_EQ(test_case, result); 352 EXPECT_EQ(test_case, result);
355 EXPECT_TRUE(slice.empty()); 353 EXPECT_TRUE(slice.empty());
356 } 354 }
357 } 355 }
358 356
359 static std::vector<char> WrappedEncodeStringWithLength(string16 value) { 357 static std::string WrappedEncodeStringWithLength(string16 value) {
360 std::vector<char> buffer; 358 std::string buffer;
361 EncodeStringWithLength(value, &buffer); 359 EncodeStringWithLength(value, &buffer);
362 return buffer; 360 return buffer;
363 } 361 }
364 362
365 TEST(IndexedDBLevelDBCodingTest, EncodeStringWithLength) { 363 TEST(IndexedDBLevelDBCodingTest, EncodeStringWithLength) {
366 const char16 test_string_a[] = {'f', 'o', 'o', '\0'}; 364 const char16 test_string_a[] = {'f', 'o', 'o', '\0'};
367 const char16 test_string_b[] = {0xdead, 0xbeef, '\0'}; 365 const char16 test_string_b[] = {0xdead, 0xbeef, '\0'};
368 366
369 EXPECT_EQ(static_cast<size_t>(1), 367 EXPECT_EQ(static_cast<size_t>(1),
370 WrappedEncodeStringWithLength(string16()).size()); 368 WrappedEncodeStringWithLength(string16()).size());
(...skipping 18 matching lines...) Expand all
389 std::vector<string16> test_cases; 387 std::vector<string16> test_cases;
390 test_cases.push_back(ASCIIToUTF16("")); 388 test_cases.push_back(ASCIIToUTF16(""));
391 test_cases.push_back(ASCIIToUTF16("a")); 389 test_cases.push_back(ASCIIToUTF16("a"));
392 test_cases.push_back(ASCIIToUTF16("foo")); 390 test_cases.push_back(ASCIIToUTF16("foo"));
393 test_cases.push_back(string16(test_string_a)); 391 test_cases.push_back(string16(test_string_a));
394 test_cases.push_back(string16(test_string_b)); 392 test_cases.push_back(string16(test_string_b));
395 test_cases.push_back(string16(long_string)); 393 test_cases.push_back(string16(long_string));
396 394
397 for (size_t i = 0; i < test_cases.size(); ++i) { 395 for (size_t i = 0; i < test_cases.size(); ++i) {
398 string16 s = test_cases[i]; 396 string16 s = test_cases[i];
399 std::vector<char> v = WrappedEncodeStringWithLength(s); 397 std::string v = WrappedEncodeStringWithLength(s);
400 ASSERT_GT(v.size(), static_cast<size_t>(0)); 398 ASSERT_GT(v.size(), static_cast<size_t>(0));
401 StringPiece slice(&*v.begin(), v.size()); 399 StringPiece slice(&*v.begin(), v.size());
402 string16 res; 400 string16 res;
403 EXPECT_TRUE(DecodeStringWithLength(&slice, &res)); 401 EXPECT_TRUE(DecodeStringWithLength(&slice, &res));
404 EXPECT_EQ(s, res); 402 EXPECT_EQ(s, res);
405 EXPECT_TRUE(slice.empty()); 403 EXPECT_TRUE(slice.empty());
406 404
407 slice = StringPiece(&*v.begin(), v.size() - 1); 405 slice = StringPiece(&*v.begin(), v.size() - 1);
408 EXPECT_FALSE(DecodeStringWithLength(&slice, &res)); 406 EXPECT_FALSE(DecodeStringWithLength(&slice, &res));
409 407
410 slice = StringPiece(&*v.begin(), static_cast<size_t>(0)); 408 slice = StringPiece(&*v.begin(), static_cast<size_t>(0));
411 EXPECT_FALSE(DecodeStringWithLength(&slice, &res)); 409 EXPECT_FALSE(DecodeStringWithLength(&slice, &res));
412 410
413 // Verify decoding at an offset, to detect unaligned memory access. 411 // Verify decoding at an offset, to detect unaligned memory access.
414 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0)); 412 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
415 slice = StringPiece(&*v.begin() + 1, v.size() - 1); 413 slice = StringPiece(&*v.begin() + 1, v.size() - 1);
416 EXPECT_TRUE(DecodeStringWithLength(&slice, &res)); 414 EXPECT_TRUE(DecodeStringWithLength(&slice, &res));
417 EXPECT_EQ(s, res); 415 EXPECT_EQ(s, res);
418 EXPECT_TRUE(slice.empty()); 416 EXPECT_TRUE(slice.empty());
419 } 417 }
420 } 418 }
421 419
422 static int CompareStrings(const std::vector<char>& p, 420 static int CompareStrings(const std::string& p, const std::string& q) {
423 const std::vector<char>& q) {
424 bool ok; 421 bool ok;
425 DCHECK(!p.empty()); 422 DCHECK(!p.empty());
426 DCHECK(!q.empty()); 423 DCHECK(!q.empty());
427 StringPiece slice_p(&*p.begin(), p.size()); 424 StringPiece slice_p(&*p.begin(), p.size());
428 StringPiece slice_q(&*q.begin(), q.size()); 425 StringPiece slice_q(&*q.begin(), q.size());
429 int result = CompareEncodedStringsWithLength(&slice_p, &slice_q, &ok); 426 int result = CompareEncodedStringsWithLength(&slice_p, &slice_q, &ok);
430 EXPECT_TRUE(ok); 427 EXPECT_TRUE(ok);
431 EXPECT_TRUE(slice_p.empty()); 428 EXPECT_TRUE(slice_p.empty());
432 EXPECT_TRUE(slice_q.empty()); 429 EXPECT_TRUE(slice_q.empty());
433 return result; 430 return result;
(...skipping 23 matching lines...) Expand all
457 454
458 for (size_t i = 0; i < test_cases.size() - 1; ++i) { 455 for (size_t i = 0; i < test_cases.size() - 1; ++i) {
459 string16 a = test_cases[i]; 456 string16 a = test_cases[i];
460 string16 b = test_cases[i + 1]; 457 string16 b = test_cases[i + 1];
461 458
462 EXPECT_LT(a.compare(b), 0); 459 EXPECT_LT(a.compare(b), 0);
463 EXPECT_GT(b.compare(a), 0); 460 EXPECT_GT(b.compare(a), 0);
464 EXPECT_EQ(a.compare(a), 0); 461 EXPECT_EQ(a.compare(a), 0);
465 EXPECT_EQ(b.compare(b), 0); 462 EXPECT_EQ(b.compare(b), 0);
466 463
467 std::vector<char> encoded_a = WrappedEncodeStringWithLength(a); 464 std::string encoded_a = WrappedEncodeStringWithLength(a);
468 EXPECT_TRUE(encoded_a.size()); 465 EXPECT_TRUE(encoded_a.size());
469 std::vector<char> encoded_b = WrappedEncodeStringWithLength(b); 466 std::string encoded_b = WrappedEncodeStringWithLength(b);
470 EXPECT_TRUE(encoded_a.size()); 467 EXPECT_TRUE(encoded_a.size());
471 468
472 EXPECT_LT(CompareStrings(encoded_a, encoded_b), 0); 469 EXPECT_LT(CompareStrings(encoded_a, encoded_b), 0);
473 EXPECT_GT(CompareStrings(encoded_b, encoded_a), 0); 470 EXPECT_GT(CompareStrings(encoded_b, encoded_a), 0);
474 EXPECT_EQ(CompareStrings(encoded_a, encoded_a), 0); 471 EXPECT_EQ(CompareStrings(encoded_a, encoded_a), 0);
475 EXPECT_EQ(CompareStrings(encoded_b, encoded_b), 0); 472 EXPECT_EQ(CompareStrings(encoded_b, encoded_b), 0);
476 } 473 }
477 } 474 }
478 475
479 static std::vector<char> WrappedEncodeDouble(double value) { 476 static std::string WrappedEncodeDouble(double value) {
480 std::vector<char> buffer; 477 std::string buffer;
481 EncodeDouble(value, &buffer); 478 EncodeDouble(value, &buffer);
482 return buffer; 479 return buffer;
483 } 480 }
484 481
485 TEST(IndexedDBLevelDBCodingTest, EncodeDouble) { 482 TEST(IndexedDBLevelDBCodingTest, EncodeDouble) {
486 EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeDouble(0).size()); 483 EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeDouble(0).size());
487 EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeDouble(3.14).size()); 484 EXPECT_EQ(static_cast<size_t>(8), WrappedEncodeDouble(3.14).size());
488 } 485 }
489 486
490 TEST(IndexedDBLevelDBCodingTest, DecodeDouble) { 487 TEST(IndexedDBLevelDBCodingTest, DecodeDouble) {
491 std::vector<double> test_cases; 488 std::vector<double> test_cases;
492 test_cases.push_back(3.14); 489 test_cases.push_back(3.14);
493 test_cases.push_back(-3.14); 490 test_cases.push_back(-3.14);
494 491
495 for (size_t i = 0; i < test_cases.size(); ++i) { 492 for (size_t i = 0; i < test_cases.size(); ++i) {
496 double value = test_cases[i]; 493 double value = test_cases[i];
497 std::vector<char> v = WrappedEncodeDouble(value); 494 std::string v = WrappedEncodeDouble(value);
498 ASSERT_GT(v.size(), static_cast<size_t>(0)); 495 ASSERT_GT(v.size(), static_cast<size_t>(0));
499 StringPiece slice(&*v.begin(), v.size()); 496 StringPiece slice(&*v.begin(), v.size());
500 double result; 497 double result;
501 EXPECT_TRUE(DecodeDouble(&slice, &result)); 498 EXPECT_TRUE(DecodeDouble(&slice, &result));
502 EXPECT_EQ(value, result); 499 EXPECT_EQ(value, result);
503 EXPECT_TRUE(slice.empty()); 500 EXPECT_TRUE(slice.empty());
504 501
505 slice = StringPiece(&*v.begin(), v.size() - 1); 502 slice = StringPiece(&*v.begin(), v.size() - 1);
506 EXPECT_FALSE(DecodeDouble(&slice, &result)); 503 EXPECT_FALSE(DecodeDouble(&slice, &result));
507 504
508 slice = StringPiece(&*v.begin(), static_cast<size_t>(0)); 505 slice = StringPiece(&*v.begin(), static_cast<size_t>(0));
509 EXPECT_FALSE(DecodeDouble(&slice, &result)); 506 EXPECT_FALSE(DecodeDouble(&slice, &result));
510 507
511 // Verify decoding at an offset, to detect unaligned memory access. 508 // Verify decoding at an offset, to detect unaligned memory access.
512 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0)); 509 v.insert(v.begin(), static_cast<size_t>(1), static_cast<char>(0));
513 slice = StringPiece(&*v.begin() + 1, v.size() - 1); 510 slice = StringPiece(&*v.begin() + 1, v.size() - 1);
514 EXPECT_TRUE(DecodeDouble(&slice, &result)); 511 EXPECT_TRUE(DecodeDouble(&slice, &result));
515 EXPECT_EQ(value, result); 512 EXPECT_EQ(value, result);
516 EXPECT_TRUE(slice.empty()); 513 EXPECT_TRUE(slice.empty());
517 } 514 }
518 } 515 }
519 516
520 TEST(IndexedDBLevelDBCodingTest, EncodeDecodeIDBKey) { 517 TEST(IndexedDBLevelDBCodingTest, EncodeDecodeIDBKey) {
521 IndexedDBKey expected_key; 518 IndexedDBKey expected_key;
522 scoped_ptr<IndexedDBKey> decoded_key; 519 scoped_ptr<IndexedDBKey> decoded_key;
523 std::vector<char> v; 520 std::string v;
524 StringPiece slice; 521 StringPiece slice;
525 522
526 std::vector<IndexedDBKey> test_cases; 523 std::vector<IndexedDBKey> test_cases;
527 test_cases.push_back(IndexedDBKey(1234, WebIDBKey::NumberType)); 524 test_cases.push_back(IndexedDBKey(1234, WebIDBKey::NumberType));
528 test_cases.push_back(IndexedDBKey(7890, WebIDBKey::DateType)); 525 test_cases.push_back(IndexedDBKey(7890, WebIDBKey::DateType));
529 test_cases.push_back(IndexedDBKey(ASCIIToUTF16("Hello World!"))); 526 test_cases.push_back(IndexedDBKey(ASCIIToUTF16("Hello World!")));
530 test_cases.push_back(IndexedDBKey(IndexedDBKey::KeyArray())); 527 test_cases.push_back(IndexedDBKey(IndexedDBKey::KeyArray()));
531 528
532 IndexedDBKey::KeyArray array; 529 IndexedDBKey::KeyArray array;
533 array.push_back(IndexedDBKey(1234, WebIDBKey::NumberType)); 530 array.push_back(IndexedDBKey(1234, WebIDBKey::NumberType));
(...skipping 12 matching lines...) Expand all
546 EXPECT_TRUE(slice.empty()); 543 EXPECT_TRUE(slice.empty());
547 544
548 slice = StringPiece(&*v.begin(), v.size() - 1); 545 slice = StringPiece(&*v.begin(), v.size() - 1);
549 EXPECT_FALSE(DecodeIDBKey(&slice, &decoded_key)); 546 EXPECT_FALSE(DecodeIDBKey(&slice, &decoded_key));
550 547
551 slice = StringPiece(&*v.begin(), static_cast<size_t>(0)); 548 slice = StringPiece(&*v.begin(), static_cast<size_t>(0));
552 EXPECT_FALSE(DecodeIDBKey(&slice, &decoded_key)); 549 EXPECT_FALSE(DecodeIDBKey(&slice, &decoded_key));
553 } 550 }
554 } 551 }
555 552
556 static std::vector<char> WrappedEncodeIDBKeyPath( 553 static std::string WrappedEncodeIDBKeyPath(const IndexedDBKeyPath& value) {
557 const IndexedDBKeyPath& value) { 554 std::string buffer;
558 std::vector<char> buffer;
559 EncodeIDBKeyPath(value, &buffer); 555 EncodeIDBKeyPath(value, &buffer);
560 return buffer; 556 return buffer;
561 } 557 }
562 558
563 TEST(IndexedDBLevelDBCodingTest, EncodeDecodeIDBKeyPath) { 559 TEST(IndexedDBLevelDBCodingTest, EncodeDecodeIDBKeyPath) {
564 std::vector<IndexedDBKeyPath> key_paths; 560 std::vector<IndexedDBKeyPath> key_paths;
565 std::vector<std::vector<char> > encoded_paths; 561 std::vector<std::string> encoded_paths;
566 562
567 { 563 {
568 key_paths.push_back(IndexedDBKeyPath()); 564 key_paths.push_back(IndexedDBKeyPath());
569 char expected[] = {0, 0, // Header 565 char expected[] = {0, 0, // Header
570 0 // Type is null 566 0 // Type is null
571 }; 567 };
572 encoded_paths.push_back( 568 encoded_paths.push_back(
573 std::vector<char>(expected, expected + arraysize(expected))); 569 std::string(expected, expected + arraysize(expected)));
574 } 570 }
575 571
576 { 572 {
577 key_paths.push_back(IndexedDBKeyPath(string16())); 573 key_paths.push_back(IndexedDBKeyPath(string16()));
578 char expected[] = {0, 0, // Header 574 char expected[] = {0, 0, // Header
579 1, // Type is string 575 1, // Type is string
580 0 // Length is 0 576 0 // Length is 0
581 }; 577 };
582 encoded_paths.push_back( 578 encoded_paths.push_back(
583 std::vector<char>(expected, expected + arraysize(expected))); 579 std::string(expected, expected + arraysize(expected)));
584 } 580 }
585 581
586 { 582 {
587 key_paths.push_back(IndexedDBKeyPath(ASCIIToUTF16("foo"))); 583 key_paths.push_back(IndexedDBKeyPath(ASCIIToUTF16("foo")));
588 char expected[] = {0, 0, // Header 584 char expected[] = {0, 0, // Header
589 1, // Type is string 585 1, // Type is string
590 3, 0, 'f', 0, 'o', 0, 'o' // String length 3, UTF-16BE 586 3, 0, 'f', 0, 'o', 0, 'o' // String length 3, UTF-16BE
591 }; 587 };
592 encoded_paths.push_back( 588 encoded_paths.push_back(
593 std::vector<char>(expected, expected + arraysize(expected))); 589 std::string(expected, expected + arraysize(expected)));
594 } 590 }
595 591
596 { 592 {
597 key_paths.push_back(IndexedDBKeyPath(ASCIIToUTF16("foo.bar"))); 593 key_paths.push_back(IndexedDBKeyPath(ASCIIToUTF16("foo.bar")));
598 char expected[] = {0, 0, // Header 594 char expected[] = {0, 0, // Header
599 1, // Type is string 595 1, // Type is string
600 7, 0, 'f', 0, 'o', 0, 'o', 0, '.', 0, 'b', 0, 'a', 0, 596 7, 0, 'f', 0, 'o', 0, 'o', 0, '.', 0, 'b', 0, 'a', 0,
601 'r' // String length 7, UTF-16BE 597 'r' // String length 7, UTF-16BE
602 }; 598 };
603 encoded_paths.push_back( 599 encoded_paths.push_back(
604 std::vector<char>(expected, expected + arraysize(expected))); 600 std::string(expected, expected + arraysize(expected)));
605 } 601 }
606 602
607 { 603 {
608 std::vector<string16> array; 604 std::vector<string16> array;
609 array.push_back(string16()); 605 array.push_back(string16());
610 array.push_back(ASCIIToUTF16("foo")); 606 array.push_back(ASCIIToUTF16("foo"));
611 array.push_back(ASCIIToUTF16("foo.bar")); 607 array.push_back(ASCIIToUTF16("foo.bar"));
612 608
613 key_paths.push_back(IndexedDBKeyPath(array)); 609 key_paths.push_back(IndexedDBKeyPath(array));
614 char expected[] = {0, 0, // Header 610 char expected[] = {0, 0, // Header
615 2, 3, // Type is array, length is 3 611 2, 3, // Type is array, length is 3
616 0, // Member 1 (String length 0) 612 0, // Member 1 (String length 0)
617 3, 0, 'f', 0, 'o', 0, 'o', // Member 2 (String length 3) 613 3, 0, 'f', 0, 'o', 0, 'o', // Member 2 (String length 3)
618 7, 0, 'f', 0, 'o', 0, 'o', 0, '.', 0, 'b', 0, 'a', 0, 614 7, 0, 'f', 0, 'o', 0, 'o', 0, '.', 0, 'b', 0, 'a', 0,
619 'r' // Member 3 (String length 7) 615 'r' // Member 3 (String length 7)
620 }; 616 };
621 encoded_paths.push_back( 617 encoded_paths.push_back(
622 std::vector<char>(expected, expected + arraysize(expected))); 618 std::string(expected, expected + arraysize(expected)));
623 } 619 }
624 620
625 ASSERT_EQ(key_paths.size(), encoded_paths.size()); 621 ASSERT_EQ(key_paths.size(), encoded_paths.size());
626 for (size_t i = 0; i < key_paths.size(); ++i) { 622 for (size_t i = 0; i < key_paths.size(); ++i) {
627 IndexedDBKeyPath key_path = key_paths[i]; 623 IndexedDBKeyPath key_path = key_paths[i];
628 std::vector<char> encoded = encoded_paths[i]; 624 std::string encoded = encoded_paths[i];
629 625
630 std::vector<char> v = WrappedEncodeIDBKeyPath(key_path); 626 std::string v = WrappedEncodeIDBKeyPath(key_path);
631 EXPECT_EQ(encoded, v); 627 EXPECT_EQ(encoded, v);
632 628
633 StringPiece slice(&*encoded.begin(), encoded.size()); 629 StringPiece slice(&*encoded.begin(), encoded.size());
634 IndexedDBKeyPath decoded; 630 IndexedDBKeyPath decoded;
635 EXPECT_TRUE(DecodeIDBKeyPath(&slice, &decoded)); 631 EXPECT_TRUE(DecodeIDBKeyPath(&slice, &decoded));
636 EXPECT_EQ(key_path, decoded); 632 EXPECT_EQ(key_path, decoded);
637 EXPECT_TRUE(slice.empty()); 633 EXPECT_TRUE(slice.empty());
638 } 634 }
639 } 635 }
640 636
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 keys.push_back(CreateArrayIDBKey(CreateArrayIDBKey(CreateArrayIDBKey()))); 700 keys.push_back(CreateArrayIDBKey(CreateArrayIDBKey(CreateArrayIDBKey())));
705 keys.push_back(CreateArrayIDBKey( 701 keys.push_back(CreateArrayIDBKey(
706 CreateArrayIDBKey(CreateArrayIDBKey(CreateArrayIDBKey())))); 702 CreateArrayIDBKey(CreateArrayIDBKey(CreateArrayIDBKey()))));
707 703
708 for (size_t i = 0; i < keys.size() - 1; ++i) { 704 for (size_t i = 0; i < keys.size() - 1; ++i) {
709 const IndexedDBKey& key_a = keys[i]; 705 const IndexedDBKey& key_a = keys[i];
710 const IndexedDBKey& key_b = keys[i + 1]; 706 const IndexedDBKey& key_b = keys[i + 1];
711 707
712 EXPECT_TRUE(key_a.IsLessThan(key_b)); 708 EXPECT_TRUE(key_a.IsLessThan(key_b));
713 709
714 std::vector<char> encoded_a; 710 std::string encoded_a;
715 EncodeIDBKey(key_a, &encoded_a); 711 EncodeIDBKey(key_a, &encoded_a);
716 EXPECT_TRUE(encoded_a.size()); 712 EXPECT_TRUE(encoded_a.size());
717 std::vector<char> encoded_b; 713 std::string encoded_b;
718 EncodeIDBKey(key_b, &encoded_b); 714 EncodeIDBKey(key_b, &encoded_b);
719 EXPECT_TRUE(encoded_b.size()); 715 EXPECT_TRUE(encoded_b.size());
720 716
721 std::vector<char> extracted_a; 717 std::string extracted_a;
722 std::vector<char> extracted_b; 718 std::string extracted_b;
723 StringPiece slice; 719 StringPiece slice;
724 720
725 slice = StringPiece(&*encoded_a.begin(), encoded_a.size()); 721 slice = StringPiece(&*encoded_a.begin(), encoded_a.size());
726 EXPECT_TRUE(ExtractEncodedIDBKey(&slice, &extracted_a)); 722 EXPECT_TRUE(ExtractEncodedIDBKey(&slice, &extracted_a));
727 EXPECT_TRUE(slice.empty()); 723 EXPECT_TRUE(slice.empty());
728 EXPECT_EQ(encoded_a, extracted_a); 724 EXPECT_EQ(encoded_a, extracted_a);
729 725
730 slice = StringPiece(&*encoded_b.begin(), encoded_b.size()); 726 slice = StringPiece(&*encoded_b.begin(), encoded_b.size());
731 EXPECT_TRUE(ExtractEncodedIDBKey(&slice, &extracted_b)); 727 EXPECT_TRUE(ExtractEncodedIDBKey(&slice, &extracted_b));
732 EXPECT_TRUE(slice.empty()); 728 EXPECT_TRUE(slice.empty());
733 EXPECT_EQ(encoded_b, extracted_b); 729 EXPECT_EQ(encoded_b, extracted_b);
734 730
735 EXPECT_LT(CompareKeys(extracted_a, extracted_b), 0); 731 EXPECT_LT(CompareKeys(extracted_a, extracted_b), 0);
736 EXPECT_GT(CompareKeys(extracted_b, extracted_a), 0); 732 EXPECT_GT(CompareKeys(extracted_b, extracted_a), 0);
737 EXPECT_EQ(CompareKeys(extracted_a, extracted_a), 0); 733 EXPECT_EQ(CompareKeys(extracted_a, extracted_a), 0);
738 EXPECT_EQ(CompareKeys(extracted_b, extracted_b), 0); 734 EXPECT_EQ(CompareKeys(extracted_b, extracted_b), 0);
739 735
740 slice = StringPiece(&*encoded_a.begin(), encoded_a.size() - 1); 736 slice = StringPiece(&*encoded_a.begin(), encoded_a.size() - 1);
741 EXPECT_FALSE(ExtractEncodedIDBKey(&slice, &extracted_a)); 737 EXPECT_FALSE(ExtractEncodedIDBKey(&slice, &extracted_a));
742 } 738 }
743 } 739 }
744 740
745 TEST(IndexedDBLevelDBCodingTest, ComparisonTest) { 741 TEST(IndexedDBLevelDBCodingTest, ComparisonTest) {
746 std::vector<std::vector<char> > keys; 742 std::vector<std::string> keys;
747 keys.push_back(SchemaVersionKey::Encode()); 743 keys.push_back(SchemaVersionKey::Encode());
748 keys.push_back(MaxDatabaseIdKey::Encode()); 744 keys.push_back(MaxDatabaseIdKey::Encode());
749 keys.push_back(DatabaseFreeListKey::Encode(0)); 745 keys.push_back(DatabaseFreeListKey::Encode(0));
750 keys.push_back(DatabaseFreeListKey::EncodeMaxKey()); 746 keys.push_back(DatabaseFreeListKey::EncodeMaxKey());
751 keys.push_back(DatabaseNameKey::Encode("", ASCIIToUTF16(""))); 747 keys.push_back(DatabaseNameKey::Encode("", ASCIIToUTF16("")));
752 keys.push_back(DatabaseNameKey::Encode("", ASCIIToUTF16("a"))); 748 keys.push_back(DatabaseNameKey::Encode("", ASCIIToUTF16("a")));
753 keys.push_back(DatabaseNameKey::Encode("a", ASCIIToUTF16("a"))); 749 keys.push_back(DatabaseNameKey::Encode("a", ASCIIToUTF16("a")));
754 keys.push_back( 750 keys.push_back(
755 DatabaseMetaDataKey::Encode(1, DatabaseMetaDataKey::ORIGIN_NAME)); 751 DatabaseMetaDataKey::Encode(1, DatabaseMetaDataKey::ORIGIN_NAME));
756 keys.push_back( 752 keys.push_back(
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MinIDBKey(), 0)); 810 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MinIDBKey(), 0));
815 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MinIDBKey(), 1)); 811 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MinIDBKey(), 1));
816 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MaxIDBKey(), 0)); 812 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MaxIDBKey(), 0));
817 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MaxIDBKey(), 1)); 813 keys.push_back(IndexDataKey::Encode(1, 1, 30, MaxIDBKey(), MaxIDBKey(), 1));
818 keys.push_back(IndexDataKey::Encode(1, 1, 31, MinIDBKey(), MinIDBKey(), 0)); 814 keys.push_back(IndexDataKey::Encode(1, 1, 31, MinIDBKey(), MinIDBKey(), 0));
819 keys.push_back(IndexDataKey::Encode(1, 2, 30, MinIDBKey(), MinIDBKey(), 0)); 815 keys.push_back(IndexDataKey::Encode(1, 2, 30, MinIDBKey(), MinIDBKey(), 0));
820 keys.push_back( 816 keys.push_back(
821 IndexDataKey::EncodeMaxKey(1, 2, std::numeric_limits<int32>::max() - 1)); 817 IndexDataKey::EncodeMaxKey(1, 2, std::numeric_limits<int32>::max() - 1));
822 818
823 for (size_t i = 0; i < keys.size(); ++i) { 819 for (size_t i = 0; i < keys.size(); ++i) {
824 const LevelDBSlice key_a(keys[i]); 820 EXPECT_EQ(Compare(keys[i], keys[i], false), 0);
825 EXPECT_EQ(Compare(key_a, key_a, false), 0);
826 821
827 for (size_t j = i + 1; j < keys.size(); ++j) { 822 for (size_t j = i + 1; j < keys.size(); ++j) {
828 const LevelDBSlice key_b(keys[j]); 823 EXPECT_LT(Compare(keys[i], keys[j], false), 0);
829 EXPECT_LT(Compare(key_a, key_b, false), 0); 824 EXPECT_GT(Compare(keys[j], keys[i], false), 0);
830 EXPECT_GT(Compare(key_b, key_a, false), 0);
831 } 825 }
832 } 826 }
833 } 827 }
834 828
835 TEST(IndexedDBLevelDBCodingTest, EncodeVarIntVSEncodeByteTest) { 829 TEST(IndexedDBLevelDBCodingTest, EncodeVarIntVSEncodeByteTest) {
836 std::vector<unsigned char> test_cases; 830 std::vector<unsigned char> test_cases;
837 test_cases.push_back(0); 831 test_cases.push_back(0);
838 test_cases.push_back(1); 832 test_cases.push_back(1);
839 test_cases.push_back(127); 833 test_cases.push_back(127);
840 834
841 for (size_t i = 0; i < test_cases.size(); ++i) { 835 for (size_t i = 0; i < test_cases.size(); ++i) {
842 unsigned char n = test_cases[i]; 836 unsigned char n = test_cases[i];
843 837
844 std::vector<char> vA = WrappedEncodeByte(n); 838 std::string vA = WrappedEncodeByte(n);
845 std::vector<char> vB = WrappedEncodeVarInt(static_cast<int64>(n)); 839 std::string vB = WrappedEncodeVarInt(static_cast<int64>(n));
846 840
847 EXPECT_EQ(vA.size(), vB.size()); 841 EXPECT_EQ(vA.size(), vB.size());
848 EXPECT_EQ(*vA.begin(), *vB.begin()); 842 EXPECT_EQ(*vA.begin(), *vB.begin());
849 } 843 }
850 } 844 }
851 845
852 } // namespace 846 } // namespace
853 847
854 } // namespace content 848 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698