OLD | NEW |
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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/pickle.h" | 9 #include "base/pickle.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 EXPECT_EQ(testfloat, outfloat); | 79 EXPECT_EQ(testfloat, outfloat); |
80 | 80 |
81 double outdouble; | 81 double outdouble; |
82 EXPECT_TRUE(iter.ReadDouble(&outdouble)); | 82 EXPECT_TRUE(iter.ReadDouble(&outdouble)); |
83 EXPECT_EQ(testdouble, outdouble); | 83 EXPECT_EQ(testdouble, outdouble); |
84 | 84 |
85 std::string outstring; | 85 std::string outstring; |
86 EXPECT_TRUE(iter.ReadString(&outstring)); | 86 EXPECT_TRUE(iter.ReadString(&outstring)); |
87 EXPECT_EQ(teststring, outstring); | 87 EXPECT_EQ(teststring, outstring); |
88 | 88 |
89 std::wstring outwstring; | |
90 EXPECT_TRUE(iter.ReadWString(&outwstring)); | |
91 EXPECT_EQ(testwstring, outwstring); | |
92 | |
93 base::string16 outstring16; | 89 base::string16 outstring16; |
94 EXPECT_TRUE(iter.ReadString16(&outstring16)); | 90 EXPECT_TRUE(iter.ReadString16(&outstring16)); |
95 EXPECT_EQ(teststring16, outstring16); | 91 EXPECT_EQ(teststring16, outstring16); |
96 | 92 |
97 base::StringPiece outstringpiece; | 93 base::StringPiece outstringpiece; |
98 EXPECT_TRUE(iter.ReadStringPiece(&outstringpiece)); | 94 EXPECT_TRUE(iter.ReadStringPiece(&outstringpiece)); |
99 EXPECT_EQ(testrawstring, outstringpiece); | 95 EXPECT_EQ(testrawstring, outstringpiece); |
100 | 96 |
101 base::StringPiece16 outstringpiece16; | 97 base::StringPiece16 outstringpiece16; |
102 EXPECT_TRUE(iter.ReadStringPiece16(&outstringpiece16)); | 98 EXPECT_TRUE(iter.ReadStringPiece16(&outstringpiece16)); |
(...skipping 20 matching lines...) Expand all Loading... |
123 EXPECT_TRUE( | 119 EXPECT_TRUE( |
124 pickle.WriteLongUsingDangerousNonPortableLessPersistableForm(testlong)); | 120 pickle.WriteLongUsingDangerousNonPortableLessPersistableForm(testlong)); |
125 EXPECT_TRUE(pickle.WriteUInt16(testuint16)); | 121 EXPECT_TRUE(pickle.WriteUInt16(testuint16)); |
126 EXPECT_TRUE(pickle.WriteUInt32(testuint32)); | 122 EXPECT_TRUE(pickle.WriteUInt32(testuint32)); |
127 EXPECT_TRUE(pickle.WriteInt64(testint64)); | 123 EXPECT_TRUE(pickle.WriteInt64(testint64)); |
128 EXPECT_TRUE(pickle.WriteUInt64(testuint64)); | 124 EXPECT_TRUE(pickle.WriteUInt64(testuint64)); |
129 EXPECT_TRUE(pickle.WriteSizeT(testsizet)); | 125 EXPECT_TRUE(pickle.WriteSizeT(testsizet)); |
130 EXPECT_TRUE(pickle.WriteFloat(testfloat)); | 126 EXPECT_TRUE(pickle.WriteFloat(testfloat)); |
131 EXPECT_TRUE(pickle.WriteDouble(testdouble)); | 127 EXPECT_TRUE(pickle.WriteDouble(testdouble)); |
132 EXPECT_TRUE(pickle.WriteString(teststring)); | 128 EXPECT_TRUE(pickle.WriteString(teststring)); |
133 EXPECT_TRUE(pickle.WriteWString(testwstring)); | |
134 EXPECT_TRUE(pickle.WriteString16(teststring16)); | 129 EXPECT_TRUE(pickle.WriteString16(teststring16)); |
135 EXPECT_TRUE(pickle.WriteString(testrawstring)); | 130 EXPECT_TRUE(pickle.WriteString(testrawstring)); |
136 EXPECT_TRUE(pickle.WriteString16(testrawstring16)); | 131 EXPECT_TRUE(pickle.WriteString16(testrawstring16)); |
137 EXPECT_TRUE(pickle.WriteData(testdata, testdatalen)); | 132 EXPECT_TRUE(pickle.WriteData(testdata, testdatalen)); |
138 VerifyResult(pickle); | 133 VerifyResult(pickle); |
139 | 134 |
140 // test copy constructor | 135 // test copy constructor |
141 Pickle pickle2(pickle); | 136 Pickle pickle2(pickle); |
142 VerifyResult(pickle2); | 137 VerifyResult(pickle2); |
143 | 138 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 TEST(PickleTest, ZeroLenStr) { | 199 TEST(PickleTest, ZeroLenStr) { |
205 Pickle pickle; | 200 Pickle pickle; |
206 EXPECT_TRUE(pickle.WriteString(std::string())); | 201 EXPECT_TRUE(pickle.WriteString(std::string())); |
207 | 202 |
208 PickleIterator iter(pickle); | 203 PickleIterator iter(pickle); |
209 std::string outstr; | 204 std::string outstr; |
210 EXPECT_TRUE(iter.ReadString(&outstr)); | 205 EXPECT_TRUE(iter.ReadString(&outstr)); |
211 EXPECT_EQ("", outstr); | 206 EXPECT_EQ("", outstr); |
212 } | 207 } |
213 | 208 |
214 TEST(PickleTest, ZeroLenWStr) { | 209 TEST(PickleTest, ZeroLenStr16) { |
215 Pickle pickle; | 210 Pickle pickle; |
216 EXPECT_TRUE(pickle.WriteWString(std::wstring())); | 211 EXPECT_TRUE(pickle.WriteString16(base::string16())); |
217 | 212 |
218 PickleIterator iter(pickle); | 213 PickleIterator iter(pickle); |
219 std::string outstr; | 214 std::string outstr; |
220 EXPECT_TRUE(iter.ReadString(&outstr)); | 215 EXPECT_TRUE(iter.ReadString(&outstr)); |
221 EXPECT_EQ("", outstr); | 216 EXPECT_EQ("", outstr); |
222 } | 217 } |
223 | 218 |
224 TEST(PickleTest, BadLenStr) { | 219 TEST(PickleTest, BadLenStr) { |
225 Pickle pickle; | 220 Pickle pickle; |
226 EXPECT_TRUE(pickle.WriteInt(-2)); | 221 EXPECT_TRUE(pickle.WriteInt(-2)); |
227 | 222 |
228 PickleIterator iter(pickle); | 223 PickleIterator iter(pickle); |
229 std::string outstr; | 224 std::string outstr; |
230 EXPECT_FALSE(iter.ReadString(&outstr)); | 225 EXPECT_FALSE(iter.ReadString(&outstr)); |
231 } | 226 } |
232 | 227 |
233 TEST(PickleTest, BadLenWStr) { | 228 TEST(PickleTest, BadLenStr16) { |
234 Pickle pickle; | 229 Pickle pickle; |
235 EXPECT_TRUE(pickle.WriteInt(-1)); | 230 EXPECT_TRUE(pickle.WriteInt(-1)); |
236 | 231 |
237 PickleIterator iter(pickle); | 232 PickleIterator iter(pickle); |
238 std::wstring woutstr; | 233 base::string16 outstr; |
239 EXPECT_FALSE(iter.ReadWString(&woutstr)); | 234 EXPECT_FALSE(iter.ReadString16(&outstr)); |
240 } | 235 } |
241 | 236 |
242 TEST(PickleTest, FindNext) { | 237 TEST(PickleTest, FindNext) { |
243 Pickle pickle; | 238 Pickle pickle; |
244 EXPECT_TRUE(pickle.WriteInt(1)); | 239 EXPECT_TRUE(pickle.WriteInt(1)); |
245 EXPECT_TRUE(pickle.WriteString("Domo")); | 240 EXPECT_TRUE(pickle.WriteString("Domo")); |
246 | 241 |
247 const char* start = reinterpret_cast<const char*>(pickle.data()); | 242 const char* start = reinterpret_cast<const char*>(pickle.data()); |
248 const char* end = start + pickle.size(); | 243 const char* end = start + pickle.size(); |
249 | 244 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 iter = PickleIterator(str16_pickle); | 392 iter = PickleIterator(str16_pickle); |
398 EXPECT_TRUE(iter.ReadString16(&str16)); | 393 EXPECT_TRUE(iter.ReadString16(&str16)); |
399 EXPECT_EQ(1U, str16.length()); | 394 EXPECT_EQ(1U, str16.length()); |
400 | 395 |
401 // Check we don't fail in a length check with invalid String16 size. | 396 // Check we don't fail in a length check with invalid String16 size. |
402 // (1<<31) * sizeof(char16) == 0, so this is particularly evil. | 397 // (1<<31) * sizeof(char16) == 0, so this is particularly evil. |
403 Pickle bad_len; | 398 Pickle bad_len; |
404 EXPECT_TRUE(bad_len.WriteInt(1 << 31)); | 399 EXPECT_TRUE(bad_len.WriteInt(1 << 31)); |
405 iter = PickleIterator(bad_len); | 400 iter = PickleIterator(bad_len); |
406 EXPECT_FALSE(iter.ReadString16(&str16)); | 401 EXPECT_FALSE(iter.ReadString16(&str16)); |
407 | |
408 // Check we don't fail in a length check with large WStrings. | |
409 Pickle big_len; | |
410 EXPECT_TRUE(big_len.WriteInt(1 << 30)); | |
411 iter = PickleIterator(big_len); | |
412 std::wstring wstr; | |
413 EXPECT_FALSE(iter.ReadWString(&wstr)); | |
414 } | 402 } |
415 | 403 |
416 // Check we can write zero bytes of data and 'data' can be NULL. | 404 // Check we can write zero bytes of data and 'data' can be NULL. |
417 TEST(PickleTest, ZeroLength) { | 405 TEST(PickleTest, ZeroLength) { |
418 Pickle pickle; | 406 Pickle pickle; |
419 EXPECT_TRUE(pickle.WriteData(NULL, 0)); | 407 EXPECT_TRUE(pickle.WriteData(NULL, 0)); |
420 | 408 |
421 PickleIterator iter(pickle); | 409 PickleIterator iter(pickle); |
422 const char* outdata; | 410 const char* outdata; |
423 int outdatalen; | 411 int outdatalen; |
424 EXPECT_TRUE(iter.ReadData(&outdata, &outdatalen)); | 412 EXPECT_TRUE(iter.ReadData(&outdata, &outdatalen)); |
425 EXPECT_EQ(0, outdatalen); | 413 EXPECT_EQ(0, outdatalen); |
426 // We can't assert that outdata is NULL. | 414 // We can't assert that outdata is NULL. |
427 } | 415 } |
428 | 416 |
429 // Check that ReadBytes works properly with an iterator initialized to NULL. | 417 // Check that ReadBytes works properly with an iterator initialized to NULL. |
430 TEST(PickleTest, ReadBytes) { | 418 TEST(PickleTest, ReadBytes) { |
431 Pickle pickle; | 419 Pickle pickle; |
432 int data = 0x7abcd; | 420 int data = 0x7abcd; |
433 EXPECT_TRUE(pickle.WriteBytes(&data, sizeof(data))); | 421 EXPECT_TRUE(pickle.WriteBytes(&data, sizeof(data))); |
434 | 422 |
435 PickleIterator iter(pickle); | 423 PickleIterator iter(pickle); |
436 const char* outdata_char = NULL; | 424 const char* outdata_char = NULL; |
437 EXPECT_TRUE(iter.ReadBytes(&outdata_char, sizeof(data))); | 425 EXPECT_TRUE(iter.ReadBytes(&outdata_char, sizeof(data))); |
438 | 426 |
439 int outdata; | 427 int outdata; |
440 memcpy(&outdata, outdata_char, sizeof(outdata)); | 428 memcpy(&outdata, outdata_char, sizeof(outdata)); |
441 EXPECT_EQ(data, outdata); | 429 EXPECT_EQ(data, outdata); |
442 } | 430 } |
OLD | NEW |