| 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 |