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

Side by Side Diff: base/pickle_unittest.cc

Issue 1001833005: Update from https://crrev.com/320343 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Supress Created 5 years, 9 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
« no previous file with comments | « base/pickle.cc ('k') | base/posix/unix_domain_socket_linux.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 12 matching lines...) Expand all
23 const uint16 testuint16 = 32123; 23 const uint16 testuint16 = 32123;
24 const uint32 testuint32 = 1593847192; 24 const uint32 testuint32 = 1593847192;
25 const int64 testint64 = -0x7E8CA9253104BDFCLL; 25 const int64 testint64 = -0x7E8CA9253104BDFCLL;
26 const uint64 testuint64 = 0xCE8CA9253104BDF7ULL; 26 const uint64 testuint64 = 0xCE8CA9253104BDF7ULL;
27 const size_t testsizet = 0xFEDC7654; 27 const size_t testsizet = 0xFEDC7654;
28 const float testfloat = 3.1415926935f; 28 const float testfloat = 3.1415926935f;
29 const double testdouble = 2.71828182845904523; 29 const double testdouble = 2.71828182845904523;
30 const std::string teststring("Hello world"); // note non-aligned string length 30 const std::string teststring("Hello world"); // note non-aligned string length
31 const std::wstring testwstring(L"Hello, world"); 31 const std::wstring testwstring(L"Hello, world");
32 const base::string16 teststring16(base::ASCIIToUTF16("Hello, world")); 32 const base::string16 teststring16(base::ASCIIToUTF16("Hello, world"));
33 const char testrawstring[] = "Hello new world"; // Test raw string writing
34 // Test raw char16 writing, assumes UTF16 encoding is ANSI for alpha chars.
35 const base::char16 testrawstring16[] = {'A', 'l', 'o', 'h', 'a', 0};
33 const char testdata[] = "AAA\0BBB\0"; 36 const char testdata[] = "AAA\0BBB\0";
34 const int testdatalen = arraysize(testdata) - 1; 37 const int testdatalen = arraysize(testdata) - 1;
35 38
36 // checks that the result 39 // checks that the results can be read correctly from the Pickle
37 void VerifyResult(const Pickle& pickle) { 40 void VerifyResult(const Pickle& pickle) {
38 PickleIterator iter(pickle); 41 PickleIterator iter(pickle);
39 42
40 bool outbool; 43 bool outbool;
41 EXPECT_TRUE(iter.ReadBool(&outbool)); 44 EXPECT_TRUE(iter.ReadBool(&outbool));
42 EXPECT_FALSE(outbool); 45 EXPECT_FALSE(outbool);
43 EXPECT_TRUE(iter.ReadBool(&outbool)); 46 EXPECT_TRUE(iter.ReadBool(&outbool));
44 EXPECT_TRUE(outbool); 47 EXPECT_TRUE(outbool);
45 48
46 int outint; 49 int outint;
(...skipping 29 matching lines...) Expand all
76 EXPECT_EQ(testfloat, outfloat); 79 EXPECT_EQ(testfloat, outfloat);
77 80
78 double outdouble; 81 double outdouble;
79 EXPECT_TRUE(iter.ReadDouble(&outdouble)); 82 EXPECT_TRUE(iter.ReadDouble(&outdouble));
80 EXPECT_EQ(testdouble, outdouble); 83 EXPECT_EQ(testdouble, outdouble);
81 84
82 std::string outstring; 85 std::string outstring;
83 EXPECT_TRUE(iter.ReadString(&outstring)); 86 EXPECT_TRUE(iter.ReadString(&outstring));
84 EXPECT_EQ(teststring, outstring); 87 EXPECT_EQ(teststring, outstring);
85 88
86 std::wstring outwstring;
87 EXPECT_TRUE(iter.ReadWString(&outwstring));
88 EXPECT_EQ(testwstring, outwstring);
89
90 base::string16 outstring16; 89 base::string16 outstring16;
91 EXPECT_TRUE(iter.ReadString16(&outstring16)); 90 EXPECT_TRUE(iter.ReadString16(&outstring16));
92 EXPECT_EQ(teststring16, outstring16); 91 EXPECT_EQ(teststring16, outstring16);
93 92
93 base::StringPiece outstringpiece;
94 EXPECT_TRUE(iter.ReadStringPiece(&outstringpiece));
95 EXPECT_EQ(testrawstring, outstringpiece);
96
97 base::StringPiece16 outstringpiece16;
98 EXPECT_TRUE(iter.ReadStringPiece16(&outstringpiece16));
99 EXPECT_EQ(testrawstring16, outstringpiece16);
100
94 const char* outdata; 101 const char* outdata;
95 int outdatalen; 102 int outdatalen;
96 EXPECT_TRUE(iter.ReadData(&outdata, &outdatalen)); 103 EXPECT_TRUE(iter.ReadData(&outdata, &outdatalen));
97 EXPECT_EQ(testdatalen, outdatalen); 104 EXPECT_EQ(testdatalen, outdatalen);
98 EXPECT_EQ(memcmp(testdata, outdata, outdatalen), 0); 105 EXPECT_EQ(memcmp(testdata, outdata, outdatalen), 0);
99 106
100 // reads past the end should fail 107 // reads past the end should fail
101 EXPECT_FALSE(iter.ReadInt(&outint)); 108 EXPECT_FALSE(iter.ReadInt(&outint));
102 } 109 }
103 110
104 } // namespace 111 } // namespace
105 112
106 TEST(PickleTest, EncodeDecode) { 113 TEST(PickleTest, EncodeDecode) {
107 Pickle pickle; 114 Pickle pickle;
108 115
109 EXPECT_TRUE(pickle.WriteBool(testbool1)); 116 EXPECT_TRUE(pickle.WriteBool(testbool1));
110 EXPECT_TRUE(pickle.WriteBool(testbool2)); 117 EXPECT_TRUE(pickle.WriteBool(testbool2));
111 EXPECT_TRUE(pickle.WriteInt(testint)); 118 EXPECT_TRUE(pickle.WriteInt(testint));
112 EXPECT_TRUE( 119 EXPECT_TRUE(
113 pickle.WriteLongUsingDangerousNonPortableLessPersistableForm(testlong)); 120 pickle.WriteLongUsingDangerousNonPortableLessPersistableForm(testlong));
114 EXPECT_TRUE(pickle.WriteUInt16(testuint16)); 121 EXPECT_TRUE(pickle.WriteUInt16(testuint16));
115 EXPECT_TRUE(pickle.WriteUInt32(testuint32)); 122 EXPECT_TRUE(pickle.WriteUInt32(testuint32));
116 EXPECT_TRUE(pickle.WriteInt64(testint64)); 123 EXPECT_TRUE(pickle.WriteInt64(testint64));
117 EXPECT_TRUE(pickle.WriteUInt64(testuint64)); 124 EXPECT_TRUE(pickle.WriteUInt64(testuint64));
118 EXPECT_TRUE(pickle.WriteSizeT(testsizet)); 125 EXPECT_TRUE(pickle.WriteSizeT(testsizet));
119 EXPECT_TRUE(pickle.WriteFloat(testfloat)); 126 EXPECT_TRUE(pickle.WriteFloat(testfloat));
120 EXPECT_TRUE(pickle.WriteDouble(testdouble)); 127 EXPECT_TRUE(pickle.WriteDouble(testdouble));
121 EXPECT_TRUE(pickle.WriteString(teststring)); 128 EXPECT_TRUE(pickle.WriteString(teststring));
122 EXPECT_TRUE(pickle.WriteWString(testwstring));
123 EXPECT_TRUE(pickle.WriteString16(teststring16)); 129 EXPECT_TRUE(pickle.WriteString16(teststring16));
130 EXPECT_TRUE(pickle.WriteString(testrawstring));
131 EXPECT_TRUE(pickle.WriteString16(testrawstring16));
124 EXPECT_TRUE(pickle.WriteData(testdata, testdatalen)); 132 EXPECT_TRUE(pickle.WriteData(testdata, testdatalen));
125 VerifyResult(pickle); 133 VerifyResult(pickle);
126 134
127 // test copy constructor 135 // test copy constructor
128 Pickle pickle2(pickle); 136 Pickle pickle2(pickle);
129 VerifyResult(pickle2); 137 VerifyResult(pickle2);
130 138
131 // test operator= 139 // test operator=
132 Pickle pickle3; 140 Pickle pickle3;
133 pickle3 = pickle; 141 pickle3 = pickle;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 TEST(PickleTest, ZeroLenStr) { 199 TEST(PickleTest, ZeroLenStr) {
192 Pickle pickle; 200 Pickle pickle;
193 EXPECT_TRUE(pickle.WriteString(std::string())); 201 EXPECT_TRUE(pickle.WriteString(std::string()));
194 202
195 PickleIterator iter(pickle); 203 PickleIterator iter(pickle);
196 std::string outstr; 204 std::string outstr;
197 EXPECT_TRUE(iter.ReadString(&outstr)); 205 EXPECT_TRUE(iter.ReadString(&outstr));
198 EXPECT_EQ("", outstr); 206 EXPECT_EQ("", outstr);
199 } 207 }
200 208
201 TEST(PickleTest, ZeroLenWStr) { 209 TEST(PickleTest, ZeroLenStr16) {
202 Pickle pickle; 210 Pickle pickle;
203 EXPECT_TRUE(pickle.WriteWString(std::wstring())); 211 EXPECT_TRUE(pickle.WriteString16(base::string16()));
204 212
205 PickleIterator iter(pickle); 213 PickleIterator iter(pickle);
206 std::string outstr; 214 std::string outstr;
207 EXPECT_TRUE(iter.ReadString(&outstr)); 215 EXPECT_TRUE(iter.ReadString(&outstr));
208 EXPECT_EQ("", outstr); 216 EXPECT_EQ("", outstr);
209 } 217 }
210 218
211 TEST(PickleTest, BadLenStr) { 219 TEST(PickleTest, BadLenStr) {
212 Pickle pickle; 220 Pickle pickle;
213 EXPECT_TRUE(pickle.WriteInt(-2)); 221 EXPECT_TRUE(pickle.WriteInt(-2));
214 222
215 PickleIterator iter(pickle); 223 PickleIterator iter(pickle);
216 std::string outstr; 224 std::string outstr;
217 EXPECT_FALSE(iter.ReadString(&outstr)); 225 EXPECT_FALSE(iter.ReadString(&outstr));
218 } 226 }
219 227
220 TEST(PickleTest, BadLenWStr) { 228 TEST(PickleTest, BadLenStr16) {
221 Pickle pickle; 229 Pickle pickle;
222 EXPECT_TRUE(pickle.WriteInt(-1)); 230 EXPECT_TRUE(pickle.WriteInt(-1));
223 231
224 PickleIterator iter(pickle); 232 PickleIterator iter(pickle);
225 std::wstring woutstr; 233 base::string16 outstr;
226 EXPECT_FALSE(iter.ReadWString(&woutstr)); 234 EXPECT_FALSE(iter.ReadString16(&outstr));
227 } 235 }
228 236
229 TEST(PickleTest, FindNext) { 237 TEST(PickleTest, FindNext) {
230 Pickle pickle; 238 Pickle pickle;
231 EXPECT_TRUE(pickle.WriteInt(1)); 239 EXPECT_TRUE(pickle.WriteInt(1));
232 EXPECT_TRUE(pickle.WriteString("Domo")); 240 EXPECT_TRUE(pickle.WriteString("Domo"));
233 241
234 const char* start = reinterpret_cast<const char*>(pickle.data()); 242 const char* start = reinterpret_cast<const char*>(pickle.data());
235 const char* end = start + pickle.size(); 243 const char* end = start + pickle.size();
236 244
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 iter = PickleIterator(str16_pickle); 392 iter = PickleIterator(str16_pickle);
385 EXPECT_TRUE(iter.ReadString16(&str16)); 393 EXPECT_TRUE(iter.ReadString16(&str16));
386 EXPECT_EQ(1U, str16.length()); 394 EXPECT_EQ(1U, str16.length());
387 395
388 // 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.
389 // (1<<31) * sizeof(char16) == 0, so this is particularly evil. 397 // (1<<31) * sizeof(char16) == 0, so this is particularly evil.
390 Pickle bad_len; 398 Pickle bad_len;
391 EXPECT_TRUE(bad_len.WriteInt(1 << 31)); 399 EXPECT_TRUE(bad_len.WriteInt(1 << 31));
392 iter = PickleIterator(bad_len); 400 iter = PickleIterator(bad_len);
393 EXPECT_FALSE(iter.ReadString16(&str16)); 401 EXPECT_FALSE(iter.ReadString16(&str16));
394
395 // Check we don't fail in a length check with large WStrings.
396 Pickle big_len;
397 EXPECT_TRUE(big_len.WriteInt(1 << 30));
398 iter = PickleIterator(big_len);
399 std::wstring wstr;
400 EXPECT_FALSE(iter.ReadWString(&wstr));
401 } 402 }
402 403
403 // 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.
404 TEST(PickleTest, ZeroLength) { 405 TEST(PickleTest, ZeroLength) {
405 Pickle pickle; 406 Pickle pickle;
406 EXPECT_TRUE(pickle.WriteData(NULL, 0)); 407 EXPECT_TRUE(pickle.WriteData(NULL, 0));
407 408
408 PickleIterator iter(pickle); 409 PickleIterator iter(pickle);
409 const char* outdata; 410 const char* outdata;
410 int outdatalen; 411 int outdatalen;
411 EXPECT_TRUE(iter.ReadData(&outdata, &outdatalen)); 412 EXPECT_TRUE(iter.ReadData(&outdata, &outdatalen));
412 EXPECT_EQ(0, outdatalen); 413 EXPECT_EQ(0, outdatalen);
413 // We can't assert that outdata is NULL. 414 // We can't assert that outdata is NULL.
414 } 415 }
415 416
416 // Check that ReadBytes works properly with an iterator initialized to NULL. 417 // Check that ReadBytes works properly with an iterator initialized to NULL.
417 TEST(PickleTest, ReadBytes) { 418 TEST(PickleTest, ReadBytes) {
418 Pickle pickle; 419 Pickle pickle;
419 int data = 0x7abcd; 420 int data = 0x7abcd;
420 EXPECT_TRUE(pickle.WriteBytes(&data, sizeof(data))); 421 EXPECT_TRUE(pickle.WriteBytes(&data, sizeof(data)));
421 422
422 PickleIterator iter(pickle); 423 PickleIterator iter(pickle);
423 const char* outdata_char = NULL; 424 const char* outdata_char = NULL;
424 EXPECT_TRUE(iter.ReadBytes(&outdata_char, sizeof(data))); 425 EXPECT_TRUE(iter.ReadBytes(&outdata_char, sizeof(data)));
425 426
426 int outdata; 427 int outdata;
427 memcpy(&outdata, outdata_char, sizeof(outdata)); 428 memcpy(&outdata, outdata_char, sizeof(outdata));
428 EXPECT_EQ(data, outdata); 429 EXPECT_EQ(data, outdata);
429 } 430 }
OLDNEW
« no previous file with comments | « base/pickle.cc ('k') | base/posix/unix_domain_socket_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698