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

Side by Side Diff: third_party/protobuf/src/google/protobuf/repeated_field_unittest.cc

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component Created 4 years 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
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 EXPECT_FALSE(field.empty()); 88 EXPECT_FALSE(field.empty());
89 EXPECT_EQ(field.size(), 1); 89 EXPECT_EQ(field.size(), 1);
90 EXPECT_EQ(field.Get(0), 5); 90 EXPECT_EQ(field.Get(0), 5);
91 91
92 field.Clear(); 92 field.Clear();
93 93
94 EXPECT_TRUE(field.empty()); 94 EXPECT_TRUE(field.empty());
95 EXPECT_EQ(field.size(), 0); 95 EXPECT_EQ(field.size(), 0);
96 // Additional bytes are for 'struct Rep' header. 96 // Additional bytes are for 'struct Rep' header.
97 int expected_usage = 4 * sizeof(int) + sizeof(Arena*); 97 int expected_usage = 4 * sizeof(int) + sizeof(Arena*);
98 EXPECT_EQ(field.SpaceUsedExcludingSelf(), expected_usage); 98 EXPECT_GE(field.SpaceUsedExcludingSelf(), expected_usage);
99 } 99 }
100 100
101 101
102 // Test operations on a RepeatedField which is large enough to allocate a 102 // Test operations on a RepeatedField which is large enough to allocate a
103 // separate array. 103 // separate array.
104 TEST(RepeatedField, Large) { 104 TEST(RepeatedField, Large) {
105 RepeatedField<int> field; 105 RepeatedField<int> field;
106 106
107 for (int i = 0; i < 16; i++) { 107 for (int i = 0; i < 16; i++) {
108 field.Add(i * i); 108 field.Add(i * i);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 200
201 return field->size() - 1; 201 return field->size() - 1;
202 } 202 }
203 203
204 TEST(RepeatedField, ReserveMoreThanDouble) { 204 TEST(RepeatedField, ReserveMoreThanDouble) {
205 // Reserve more than double the previous space in the field and expect the 205 // Reserve more than double the previous space in the field and expect the
206 // field to reserve exactly the amount specified. 206 // field to reserve exactly the amount specified.
207 RepeatedField<int> field; 207 RepeatedField<int> field;
208 field.Reserve(20); 208 field.Reserve(20);
209 209
210 EXPECT_EQ(20, ReservedSpace(&field)); 210 EXPECT_LE(20, ReservedSpace(&field));
211 } 211 }
212 212
213 TEST(RepeatedField, ReserveLessThanDouble) { 213 TEST(RepeatedField, ReserveLessThanDouble) {
214 // Reserve less than double the previous space in the field and expect the 214 // Reserve less than double the previous space in the field and expect the
215 // field to grow by double instead. 215 // field to grow by double instead.
216 RepeatedField<int> field; 216 RepeatedField<int> field;
217 field.Reserve(20); 217 field.Reserve(20);
218 field.Reserve(30); 218 int capacity = field.Capacity();
219 field.Reserve(capacity * 1.5);
219 220
220 EXPECT_EQ(40, ReservedSpace(&field)); 221 EXPECT_LE(2 * capacity, ReservedSpace(&field));
221 } 222 }
222 223
223 TEST(RepeatedField, ReserveLessThanExisting) { 224 TEST(RepeatedField, ReserveLessThanExisting) {
224 // Reserve less than the previous space in the field and expect the 225 // Reserve less than the previous space in the field and expect the
225 // field to not re-allocate at all. 226 // field to not re-allocate at all.
226 RepeatedField<int> field; 227 RepeatedField<int> field;
227 field.Reserve(20); 228 field.Reserve(20);
228 const int* previous_ptr = field.data(); 229 const int* previous_ptr = field.data();
229 field.Reserve(10); 230 field.Reserve(10);
230 231
231 EXPECT_EQ(previous_ptr, field.data()); 232 EXPECT_EQ(previous_ptr, field.data());
232 EXPECT_EQ(20, ReservedSpace(&field)); 233 EXPECT_LE(20, ReservedSpace(&field));
233 } 234 }
234 235
235 TEST(RepeatedField, Resize) { 236 TEST(RepeatedField, Resize) {
236 RepeatedField<int> field; 237 RepeatedField<int> field;
237 field.Resize(2, 1); 238 field.Resize(2, 1);
238 EXPECT_EQ(2, field.size()); 239 EXPECT_EQ(2, field.size());
239 field.Resize(5, 2); 240 field.Resize(5, 2);
240 EXPECT_EQ(5, field.size()); 241 EXPECT_EQ(5, field.size());
241 field.Resize(4, 3); 242 field.Resize(4, 3);
242 ASSERT_EQ(4, field.size()); 243 ASSERT_EQ(4, field.size());
(...skipping 17 matching lines...) Expand all
260 261
261 ASSERT_EQ(5, destination.size()); 262 ASSERT_EQ(5, destination.size());
262 EXPECT_EQ(1, destination.Get(0)); 263 EXPECT_EQ(1, destination.Get(0));
263 EXPECT_EQ(2, destination.Get(1)); 264 EXPECT_EQ(2, destination.Get(1));
264 EXPECT_EQ(3, destination.Get(2)); 265 EXPECT_EQ(3, destination.Get(2));
265 EXPECT_EQ(4, destination.Get(3)); 266 EXPECT_EQ(4, destination.Get(3));
266 EXPECT_EQ(5, destination.Get(4)); 267 EXPECT_EQ(5, destination.Get(4));
267 } 268 }
268 269
269 #ifdef PROTOBUF_HAS_DEATH_TEST 270 #ifdef PROTOBUF_HAS_DEATH_TEST
271 #ifndef NDEBUG
270 TEST(RepeatedField, MergeFromSelf) { 272 TEST(RepeatedField, MergeFromSelf) {
271 RepeatedField<int> me; 273 RepeatedField<int> me;
272 me.Add(3); 274 me.Add(3);
273 EXPECT_DEATH(me.MergeFrom(me), ""); 275 EXPECT_DEATH(me.MergeFrom(me), "");
274 } 276 }
277 #endif // NDEBUG
275 #endif // PROTOBUF_HAS_DEATH_TEST 278 #endif // PROTOBUF_HAS_DEATH_TEST
276 279
277 TEST(RepeatedField, CopyFrom) { 280 TEST(RepeatedField, CopyFrom) {
278 RepeatedField<int> source, destination; 281 RepeatedField<int> source, destination;
279 source.Add(4); 282 source.Add(4);
280 source.Add(5); 283 source.Add(5);
281 destination.Add(1); 284 destination.Add(1);
282 destination.Add(2); 285 destination.Add(2);
283 destination.Add(3); 286 destination.Add(3);
284 287
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 source.Add(2); 339 source.Add(2);
337 340
338 RepeatedField<int> destination(source); 341 RepeatedField<int> destination(source);
339 342
340 ASSERT_EQ(2, destination.size()); 343 ASSERT_EQ(2, destination.size());
341 EXPECT_EQ(1, destination.Get(0)); 344 EXPECT_EQ(1, destination.Get(0));
342 EXPECT_EQ(2, destination.Get(1)); 345 EXPECT_EQ(2, destination.Get(1));
343 } 346 }
344 347
345 TEST(RepeatedField, IteratorConstruct) { 348 TEST(RepeatedField, IteratorConstruct) {
346 vector<int> values; 349 std::vector<int> values;
347 values.push_back(1); 350 values.push_back(1);
348 values.push_back(2); 351 values.push_back(2);
349 352
350 RepeatedField<int> field(values.begin(), values.end()); 353 RepeatedField<int> field(values.begin(), values.end());
351 ASSERT_EQ(values.size(), field.size()); 354 ASSERT_EQ(values.size(), field.size());
352 EXPECT_EQ(values[0], field.Get(0)); 355 EXPECT_EQ(values[0], field.Get(0));
353 EXPECT_EQ(values[1], field.Get(1)); 356 EXPECT_EQ(values[1], field.Get(1));
354 357
355 RepeatedField<int> other(field.begin(), field.end()); 358 RepeatedField<int> other(field.begin(), field.end());
356 ASSERT_EQ(values.size(), other.size()); 359 ASSERT_EQ(values.size(), other.size());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 TEST(RepeatedField, MutableDataIsMutable) { 393 TEST(RepeatedField, MutableDataIsMutable) {
391 RepeatedField<int> field; 394 RepeatedField<int> field;
392 field.Add(1); 395 field.Add(1);
393 EXPECT_EQ(1, field.Get(0)); 396 EXPECT_EQ(1, field.Get(0));
394 // The fact that this line compiles would be enough, but we'll check the 397 // The fact that this line compiles would be enough, but we'll check the
395 // value anyway. 398 // value anyway.
396 *field.mutable_data() = 2; 399 *field.mutable_data() = 2;
397 EXPECT_EQ(2, field.Get(0)); 400 EXPECT_EQ(2, field.Get(0));
398 } 401 }
399 402
403 TEST(RepeatedField, SubscriptOperators) {
404 RepeatedField<int> field;
405 field.Add(1);
406 EXPECT_EQ(1, field.Get(0));
407 EXPECT_EQ(1, field[0]);
408 EXPECT_EQ(field.Mutable(0), &field[0]);
409 const RepeatedField<int>& const_field = field;
410 EXPECT_EQ(field.data(), &const_field[0]);
411 }
412
400 TEST(RepeatedField, Truncate) { 413 TEST(RepeatedField, Truncate) {
401 RepeatedField<int> field; 414 RepeatedField<int> field;
402 415
403 field.Add(12); 416 field.Add(12);
404 field.Add(34); 417 field.Add(34);
405 field.Add(56); 418 field.Add(56);
406 field.Add(78); 419 field.Add(78);
407 EXPECT_EQ(4, field.size()); 420 EXPECT_EQ(4, field.size());
408 421
409 field.Truncate(3); 422 field.Truncate(3);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 // present. Use a 'string' and > 16 bytes length so that the elements are 476 // present. Use a 'string' and > 16 bytes length so that the elements are
464 // non-POD and allocate -- the leak checker will catch any skipped destructor 477 // non-POD and allocate -- the leak checker will catch any skipped destructor
465 // calls here. 478 // calls here.
466 RepeatedField<string> field; 479 RepeatedField<string> field;
467 for (int i = 0; i < 32; i++) { 480 for (int i = 0; i < 32; i++) {
468 field.Add(string("abcdefghijklmnopqrstuvwxyz0123456789")); 481 field.Add(string("abcdefghijklmnopqrstuvwxyz0123456789"));
469 } 482 }
470 EXPECT_EQ(32, field.size()); 483 EXPECT_EQ(32, field.size());
471 field.Clear(); 484 field.Clear();
472 EXPECT_EQ(0, field.size()); 485 EXPECT_EQ(0, field.size());
473 EXPECT_EQ(32, field.Capacity()); 486 EXPECT_LE(32, field.Capacity());
474 487
475 field.Reserve(1024); 488 field.Reserve(1024);
476 EXPECT_EQ(0, field.size()); 489 EXPECT_EQ(0, field.size());
477 EXPECT_EQ(1024, field.Capacity()); 490 EXPECT_LE(1024, field.Capacity());
478 // Finish test -- |field| should destroy the cleared-but-not-yet-destroyed 491 // Finish test -- |field| should destroy the cleared-but-not-yet-destroyed
479 // strings. 492 // strings.
480 } 493 }
481 494
482 // =================================================================== 495 // ===================================================================
483 // RepeatedPtrField tests. These pretty much just mirror the RepeatedField 496 // RepeatedPtrField tests. These pretty much just mirror the RepeatedField
484 // tests above. 497 // tests above.
485 498
486 TEST(RepeatedPtrField, Small) { 499 TEST(RepeatedPtrField, Small) {
487 RepeatedPtrField<string> field; 500 RepeatedPtrField<string> field;
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 field->Add(); 635 field->Add();
623 } while (field->data() == ptr); 636 } while (field->data() == ptr);
624 637
625 return field->size() - 1; 638 return field->size() - 1;
626 } 639 }
627 640
628 TEST(RepeatedPtrField, ReserveMoreThanDouble) { 641 TEST(RepeatedPtrField, ReserveMoreThanDouble) {
629 RepeatedPtrField<string> field; 642 RepeatedPtrField<string> field;
630 field.Reserve(20); 643 field.Reserve(20);
631 644
632 EXPECT_EQ(20, ReservedSpace(&field)); 645 EXPECT_LE(20, ReservedSpace(&field));
633 } 646 }
634 647
635 TEST(RepeatedPtrField, ReserveLessThanDouble) { 648 TEST(RepeatedPtrField, ReserveLessThanDouble) {
636 RepeatedPtrField<string> field; 649 RepeatedPtrField<string> field;
637 field.Reserve(20); 650 field.Reserve(20);
638 field.Reserve(30);
639 651
640 EXPECT_EQ(40, ReservedSpace(&field)); 652 int capacity = field.Capacity();
653 // Grow by 1.5x
654 field.Reserve(capacity + (capacity >> 2));
655
656 EXPECT_LE(2 * capacity, ReservedSpace(&field));
641 } 657 }
642 658
643 TEST(RepeatedPtrField, ReserveLessThanExisting) { 659 TEST(RepeatedPtrField, ReserveLessThanExisting) {
644 RepeatedPtrField<string> field; 660 RepeatedPtrField<string> field;
645 field.Reserve(20); 661 field.Reserve(20);
646 const string* const* previous_ptr = field.data(); 662 const string* const* previous_ptr = field.data();
647 field.Reserve(10); 663 field.Reserve(10);
648 664
649 EXPECT_EQ(previous_ptr, field.data()); 665 EXPECT_EQ(previous_ptr, field.data());
650 EXPECT_EQ(20, ReservedSpace(&field)); 666 EXPECT_LE(20, ReservedSpace(&field));
651 } 667 }
652 668
653 TEST(RepeatedPtrField, ReserveDoesntLoseAllocated) { 669 TEST(RepeatedPtrField, ReserveDoesntLoseAllocated) {
654 // Check that a bug is fixed: An earlier implementation of Reserve() 670 // Check that a bug is fixed: An earlier implementation of Reserve()
655 // failed to copy pointers to allocated-but-cleared objects, possibly 671 // failed to copy pointers to allocated-but-cleared objects, possibly
656 // leading to segfaults. 672 // leading to segfaults.
657 RepeatedPtrField<string> field; 673 RepeatedPtrField<string> field;
658 string* first = field.Add(); 674 string* first = field.Add();
659 field.RemoveLast(); 675 field.RemoveLast();
660 676
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 source.Add()->assign("2"); 853 source.Add()->assign("2");
838 854
839 RepeatedPtrField<string> destination(source); 855 RepeatedPtrField<string> destination(source);
840 856
841 ASSERT_EQ(2, destination.size()); 857 ASSERT_EQ(2, destination.size());
842 EXPECT_EQ("1", destination.Get(0)); 858 EXPECT_EQ("1", destination.Get(0));
843 EXPECT_EQ("2", destination.Get(1)); 859 EXPECT_EQ("2", destination.Get(1));
844 } 860 }
845 861
846 TEST(RepeatedPtrField, IteratorConstruct_String) { 862 TEST(RepeatedPtrField, IteratorConstruct_String) {
847 vector<string> values; 863 std::vector<string> values;
848 values.push_back("1"); 864 values.push_back("1");
849 values.push_back("2"); 865 values.push_back("2");
850 866
851 RepeatedPtrField<string> field(values.begin(), values.end()); 867 RepeatedPtrField<string> field(values.begin(), values.end());
852 ASSERT_EQ(values.size(), field.size()); 868 ASSERT_EQ(values.size(), field.size());
853 EXPECT_EQ(values[0], field.Get(0)); 869 EXPECT_EQ(values[0], field.Get(0));
854 EXPECT_EQ(values[1], field.Get(1)); 870 EXPECT_EQ(values[1], field.Get(1));
855 871
856 RepeatedPtrField<string> other(field.begin(), field.end()); 872 RepeatedPtrField<string> other(field.begin(), field.end());
857 ASSERT_EQ(values.size(), other.size()); 873 ASSERT_EQ(values.size(), other.size());
858 EXPECT_EQ(values[0], other.Get(0)); 874 EXPECT_EQ(values[0], other.Get(0));
859 EXPECT_EQ(values[1], other.Get(1)); 875 EXPECT_EQ(values[1], other.Get(1));
860 } 876 }
861 877
862 TEST(RepeatedPtrField, IteratorConstruct_Proto) { 878 TEST(RepeatedPtrField, IteratorConstruct_Proto) {
863 typedef TestAllTypes::NestedMessage Nested; 879 typedef TestAllTypes::NestedMessage Nested;
864 vector<Nested> values; 880 std::vector<Nested> values;
865 values.push_back(Nested()); 881 values.push_back(Nested());
866 values.back().set_bb(1); 882 values.back().set_bb(1);
867 values.push_back(Nested()); 883 values.push_back(Nested());
868 values.back().set_bb(2); 884 values.back().set_bb(2);
869 885
870 RepeatedPtrField<Nested> field(values.begin(), values.end()); 886 RepeatedPtrField<Nested> field(values.begin(), values.end());
871 ASSERT_EQ(values.size(), field.size()); 887 ASSERT_EQ(values.size(), field.size());
872 EXPECT_EQ(values[0].bb(), field.Get(0).bb()); 888 EXPECT_EQ(values[0].bb(), field.Get(0).bb());
873 EXPECT_EQ(values[1].bb(), field.Get(1).bb()); 889 EXPECT_EQ(values[1].bb(), field.Get(1).bb());
874 890
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 RepeatedPtrField<string> field; 927 RepeatedPtrField<string> field;
912 *field.Add() = "1"; 928 *field.Add() = "1";
913 EXPECT_EQ("1", field.Get(0)); 929 EXPECT_EQ("1", field.Get(0));
914 // The fact that this line compiles would be enough, but we'll check the 930 // The fact that this line compiles would be enough, but we'll check the
915 // value anyway. 931 // value anyway.
916 string** data = field.mutable_data(); 932 string** data = field.mutable_data();
917 **data = "2"; 933 **data = "2";
918 EXPECT_EQ("2", field.Get(0)); 934 EXPECT_EQ("2", field.Get(0));
919 } 935 }
920 936
937 TEST(RepeatedPtrField, SubscriptOperators) {
938 RepeatedPtrField<string> field;
939 *field.Add() = "1";
940 EXPECT_EQ("1", field.Get(0));
941 EXPECT_EQ("1", field[0]);
942 EXPECT_EQ(field.Mutable(0), &field[0]);
943 const RepeatedPtrField<string>& const_field = field;
944 EXPECT_EQ(*field.data(), &const_field[0]);
945 }
946
921 TEST(RepeatedPtrField, ExtractSubrange) { 947 TEST(RepeatedPtrField, ExtractSubrange) {
922 // Exhaustively test every subrange in arrays of all sizes from 0 through 9 948 // Exhaustively test every subrange in arrays of all sizes from 0 through 9
923 // with 0 through 3 cleared elements at the end. 949 // with 0 through 3 cleared elements at the end.
924 for (int sz = 0; sz < 10; ++sz) { 950 for (int sz = 0; sz < 10; ++sz) {
925 for (int num = 0; num <= sz; ++num) { 951 for (int num = 0; num <= sz; ++num) {
926 for (int start = 0; start < sz - num; ++start) { 952 for (int start = 0; start < sz - num; ++start) {
927 for (int extra = 0; extra < 4; ++extra) { 953 for (int extra = 0; extra < 4; ++extra) {
928 vector<string*> subject; 954 std::vector<string*> subject;
929 955
930 // Create an array with "sz" elements and "extra" cleared elements. 956 // Create an array with "sz" elements and "extra" cleared elements.
931 RepeatedPtrField<string> field; 957 RepeatedPtrField<string> field;
932 for (int i = 0; i < sz + extra; ++i) { 958 for (int i = 0; i < sz + extra; ++i) {
933 subject.push_back(new string()); 959 subject.push_back(new string());
934 field.AddAllocated(subject[i]); 960 field.AddAllocated(subject[i]);
935 } 961 }
936 EXPECT_EQ(field.size(), sz + extra); 962 EXPECT_EQ(field.size(), sz + extra);
937 for (int i = 0; i < extra; ++i) 963 for (int i = 0; i < extra; ++i)
938 field.RemoveLast(); 964 field.RemoveLast();
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
1480 TEST_F(RepeatedFieldInsertionIteratorsTest, Nesteds) { 1506 TEST_F(RepeatedFieldInsertionIteratorsTest, Nesteds) {
1481 ASSERT_EQ(protobuffer.repeated_nested_message_size(), 4); 1507 ASSERT_EQ(protobuffer.repeated_nested_message_size(), 4);
1482 EXPECT_EQ(protobuffer.repeated_nested_message(0).bb(), 17); 1508 EXPECT_EQ(protobuffer.repeated_nested_message(0).bb(), 17);
1483 EXPECT_EQ(protobuffer.repeated_nested_message(1).bb(), 4711); 1509 EXPECT_EQ(protobuffer.repeated_nested_message(1).bb(), 4711);
1484 EXPECT_EQ(protobuffer.repeated_nested_message(2).bb(), 170); 1510 EXPECT_EQ(protobuffer.repeated_nested_message(2).bb(), 170);
1485 EXPECT_EQ(protobuffer.repeated_nested_message(3).bb(), 47110); 1511 EXPECT_EQ(protobuffer.repeated_nested_message(3).bb(), 47110);
1486 } 1512 }
1487 1513
1488 TEST_F(RepeatedFieldInsertionIteratorsTest, 1514 TEST_F(RepeatedFieldInsertionIteratorsTest,
1489 AllocatedRepeatedPtrFieldWithStringIntData) { 1515 AllocatedRepeatedPtrFieldWithStringIntData) {
1490 vector<Nested*> data; 1516 std::vector<Nested*> data;
1491 TestAllTypes goldenproto; 1517 TestAllTypes goldenproto;
1492 for (int i = 0; i < 10; ++i) { 1518 for (int i = 0; i < 10; ++i) {
1493 Nested* new_data = new Nested; 1519 Nested* new_data = new Nested;
1494 new_data->set_bb(i); 1520 new_data->set_bb(i);
1495 data.push_back(new_data); 1521 data.push_back(new_data);
1496 1522
1497 new_data = goldenproto.add_repeated_nested_message(); 1523 new_data = goldenproto.add_repeated_nested_message();
1498 new_data->set_bb(i); 1524 new_data->set_bb(i);
1499 } 1525 }
1500 TestAllTypes testproto; 1526 TestAllTypes testproto;
1501 std::copy(data.begin(), data.end(), 1527 std::copy(data.begin(), data.end(),
1502 AllocatedRepeatedPtrFieldBackInserter( 1528 AllocatedRepeatedPtrFieldBackInserter(
1503 testproto.mutable_repeated_nested_message())); 1529 testproto.mutable_repeated_nested_message()));
1504 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString()); 1530 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString());
1505 } 1531 }
1506 1532
1507 TEST_F(RepeatedFieldInsertionIteratorsTest, 1533 TEST_F(RepeatedFieldInsertionIteratorsTest,
1508 AllocatedRepeatedPtrFieldWithString) { 1534 AllocatedRepeatedPtrFieldWithString) {
1509 vector<string*> data; 1535 std::vector<string*> data;
1510 TestAllTypes goldenproto; 1536 TestAllTypes goldenproto;
1511 for (int i = 0; i < 10; ++i) { 1537 for (int i = 0; i < 10; ++i) {
1512 string* new_data = new string; 1538 string* new_data = new string;
1513 *new_data = "name-" + SimpleItoa(i); 1539 *new_data = "name-" + SimpleItoa(i);
1514 data.push_back(new_data); 1540 data.push_back(new_data);
1515 1541
1516 new_data = goldenproto.add_repeated_string(); 1542 new_data = goldenproto.add_repeated_string();
1517 *new_data = "name-" + SimpleItoa(i); 1543 *new_data = "name-" + SimpleItoa(i);
1518 } 1544 }
1519 TestAllTypes testproto; 1545 TestAllTypes testproto;
1520 std::copy(data.begin(), data.end(), AllocatedRepeatedPtrFieldBackInserter( 1546 std::copy(data.begin(), data.end(), AllocatedRepeatedPtrFieldBackInserter(
1521 testproto.mutable_repeated_string())); 1547 testproto.mutable_repeated_string()));
1522 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString()); 1548 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString());
1523 } 1549 }
1524 1550
1525 TEST_F(RepeatedFieldInsertionIteratorsTest, 1551 TEST_F(RepeatedFieldInsertionIteratorsTest,
1526 UnsafeArenaAllocatedRepeatedPtrFieldWithStringIntData) { 1552 UnsafeArenaAllocatedRepeatedPtrFieldWithStringIntData) {
1527 vector<Nested*> data; 1553 std::vector<Nested*> data;
1528 TestAllTypes goldenproto; 1554 TestAllTypes goldenproto;
1529 for (int i = 0; i < 10; ++i) { 1555 for (int i = 0; i < 10; ++i) {
1530 Nested* new_data = new Nested; 1556 Nested* new_data = new Nested;
1531 new_data->set_bb(i); 1557 new_data->set_bb(i);
1532 data.push_back(new_data); 1558 data.push_back(new_data);
1533 1559
1534 new_data = goldenproto.add_repeated_nested_message(); 1560 new_data = goldenproto.add_repeated_nested_message();
1535 new_data->set_bb(i); 1561 new_data->set_bb(i);
1536 } 1562 }
1537 TestAllTypes testproto; 1563 TestAllTypes testproto;
1538 std::copy(data.begin(), data.end(), 1564 std::copy(data.begin(), data.end(),
1539 UnsafeArenaAllocatedRepeatedPtrFieldBackInserter( 1565 UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(
1540 testproto.mutable_repeated_nested_message())); 1566 testproto.mutable_repeated_nested_message()));
1541 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString()); 1567 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString());
1542 } 1568 }
1543 1569
1544 TEST_F(RepeatedFieldInsertionIteratorsTest, 1570 TEST_F(RepeatedFieldInsertionIteratorsTest,
1545 UnsafeArenaAllocatedRepeatedPtrFieldWithString) { 1571 UnsafeArenaAllocatedRepeatedPtrFieldWithString) {
1546 vector<string*> data; 1572 std::vector<string*> data;
1547 TestAllTypes goldenproto; 1573 TestAllTypes goldenproto;
1548 for (int i = 0; i < 10; ++i) { 1574 for (int i = 0; i < 10; ++i) {
1549 string* new_data = new string; 1575 string* new_data = new string;
1550 *new_data = "name-" + SimpleItoa(i); 1576 *new_data = "name-" + SimpleItoa(i);
1551 data.push_back(new_data); 1577 data.push_back(new_data);
1552 1578
1553 new_data = goldenproto.add_repeated_string(); 1579 new_data = goldenproto.add_repeated_string();
1554 *new_data = "name-" + SimpleItoa(i); 1580 *new_data = "name-" + SimpleItoa(i);
1555 } 1581 }
1556 TestAllTypes testproto; 1582 TestAllTypes testproto;
1557 std::copy(data.begin(), data.end(), 1583 std::copy(data.begin(), data.end(),
1558 UnsafeArenaAllocatedRepeatedPtrFieldBackInserter( 1584 UnsafeArenaAllocatedRepeatedPtrFieldBackInserter(
1559 testproto.mutable_repeated_string())); 1585 testproto.mutable_repeated_string()));
1560 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString()); 1586 EXPECT_EQ(testproto.DebugString(), goldenproto.DebugString());
1561 } 1587 }
1562 1588
1563 } // namespace 1589 } // namespace
1564 1590
1565 } // namespace protobuf 1591 } // namespace protobuf
1566 } // namespace google 1592 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698