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

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

Issue 2600753002: Reverts third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Created 3 years, 12 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
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 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 unittest::TestMessageSetExtension1::message_set_extension, 198 unittest::TestMessageSetExtension1::message_set_extension,
199 extension); 199 extension);
200 message.ClearExtension( 200 message.ClearExtension(
201 unittest::TestMessageSetExtension1::message_set_extension); 201 unittest::TestMessageSetExtension1::message_set_extension);
202 released_extension = message.ReleaseExtension( 202 released_extension = message.ReleaseExtension(
203 unittest::TestMessageSetExtension1::message_set_extension); 203 unittest::TestMessageSetExtension1::message_set_extension);
204 EXPECT_TRUE(released_extension != NULL); 204 EXPECT_TRUE(released_extension != NULL);
205 delete released_extension; 205 delete released_extension;
206 } 206 }
207 207
208 TEST(ExtensionSetTest, ArenaUnsafeArenaSetAllocatedAndRelease) {
209 ::google::protobuf::Arena arena;
210 unittest::TestAllExtensions* message =
211 ::google::protobuf::Arena::CreateMessage<unittest::TestAllExtensions>(&are na);
212 unittest::ForeignMessage extension;
213 message->UnsafeArenaSetAllocatedExtension(
214 unittest::optional_foreign_message_extension,
215 &extension);
216 // No copy when set.
217 unittest::ForeignMessage* mutable_extension =
218 message->MutableExtension(unittest::optional_foreign_message_extension);
219 EXPECT_EQ(&extension, mutable_extension);
220 // No copy when unsafe released.
221 unittest::ForeignMessage* released_extension =
222 message->UnsafeArenaReleaseExtension(
223 unittest::optional_foreign_message_extension);
224 EXPECT_EQ(&extension, released_extension);
225 EXPECT_FALSE(message->HasExtension(
226 unittest::optional_foreign_message_extension));
227 // Set the ownership back and let the destructors run. It should not take
228 // ownership, so this should not crash.
229 message->UnsafeArenaSetAllocatedExtension(
230 unittest::optional_foreign_message_extension,
231 &extension);
232 }
233
234 TEST(ExtensionSetTest, UnsafeArenaSetAllocatedAndRelease) {
235 unittest::TestAllExtensions message;
236 unittest::ForeignMessage* extension = new unittest::ForeignMessage();
237 message.UnsafeArenaSetAllocatedExtension(
238 unittest::optional_foreign_message_extension,
239 extension);
240 // No copy when set.
241 unittest::ForeignMessage* mutable_extension =
242 message.MutableExtension(unittest::optional_foreign_message_extension);
243 EXPECT_EQ(extension, mutable_extension);
244 // No copy when unsafe released.
245 unittest::ForeignMessage* released_extension =
246 message.UnsafeArenaReleaseExtension(
247 unittest::optional_foreign_message_extension);
248 EXPECT_EQ(extension, released_extension);
249 EXPECT_FALSE(message.HasExtension(
250 unittest::optional_foreign_message_extension));
251 // Set the ownership back and let the destructors run. It should take
252 // ownership, so this should not leak.
253 message.UnsafeArenaSetAllocatedExtension(
254 unittest::optional_foreign_message_extension,
255 extension);
256 }
257
258 TEST(ExtensionSetTest, ArenaUnsafeArenaReleaseOfHeapAlloc) {
259 ::google::protobuf::Arena arena;
260 unittest::TestAllExtensions* message =
261 ::google::protobuf::Arena::CreateMessage<unittest::TestAllExtensions>(&are na);
262 unittest::ForeignMessage* extension = new unittest::ForeignMessage;
263 message->SetAllocatedExtension(
264 unittest::optional_foreign_message_extension,
265 extension);
266 // The arena should maintain ownership of the heap allocated proto because we
267 // used UnsafeArenaReleaseExtension. The leak checker will ensure this.
268 unittest::ForeignMessage* released_extension =
269 message->UnsafeArenaReleaseExtension(
270 unittest::optional_foreign_message_extension);
271 EXPECT_EQ(extension, released_extension);
272 EXPECT_FALSE(message->HasExtension(
273 unittest::optional_foreign_message_extension));
274 }
275
276 208
277 TEST(ExtensionSetTest, CopyFrom) { 209 TEST(ExtensionSetTest, CopyFrom) {
278 unittest::TestAllExtensions message1, message2; 210 unittest::TestAllExtensions message1, message2;
279 211
280 TestUtil::SetAllExtensions(&message1); 212 TestUtil::SetAllExtensions(&message1);
281 message2.CopyFrom(message1); 213 message2.CopyFrom(message1);
282 TestUtil::ExpectAllExtensionsSet(message2); 214 TestUtil::ExpectAllExtensionsSet(message2);
283 message2.CopyFrom(message1); // exercise copy when fields already exist 215 message2.CopyFrom(message1); // exercise copy when fields already exist
284 TestUtil::ExpectAllExtensionsSet(message2); 216 TestUtil::ExpectAllExtensionsSet(message2);
285 } 217 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 TestUtil::ExpectAllExtensionsSet(message); 256 TestUtil::ExpectAllExtensionsSet(message);
325 message.Swap(&message); 257 message.Swap(&message);
326 TestUtil::ExpectAllExtensionsSet(message); 258 TestUtil::ExpectAllExtensionsSet(message);
327 } 259 }
328 260
329 TEST(ExtensionSetTest, SwapExtension) { 261 TEST(ExtensionSetTest, SwapExtension) {
330 unittest::TestAllExtensions message1; 262 unittest::TestAllExtensions message1;
331 unittest::TestAllExtensions message2; 263 unittest::TestAllExtensions message2;
332 264
333 TestUtil::SetAllExtensions(&message1); 265 TestUtil::SetAllExtensions(&message1);
334 std::vector<const FieldDescriptor*> fields; 266 vector<const FieldDescriptor*> fields;
335 267
336 // Swap empty fields. 268 // Swap empty fields.
337 const Reflection* reflection = message1.GetReflection(); 269 const Reflection* reflection = message1.GetReflection();
338 reflection->SwapFields(&message1, &message2, fields); 270 reflection->SwapFields(&message1, &message2, fields);
339 TestUtil::ExpectAllExtensionsSet(message1); 271 TestUtil::ExpectAllExtensionsSet(message1);
340 TestUtil::ExpectExtensionsClear(message2); 272 TestUtil::ExpectExtensionsClear(message2);
341 273
342 // Swap two extensions. 274 // Swap two extensions.
343 fields.push_back( 275 fields.push_back(
344 reflection->FindKnownExtensionByNumber(12)); 276 reflection->FindKnownExtensionByNumber(12));
(...skipping 11 matching lines...) Expand all
356 } 288 }
357 289
358 TEST(ExtensionSetTest, SwapExtensionWithEmpty) { 290 TEST(ExtensionSetTest, SwapExtensionWithEmpty) {
359 unittest::TestAllExtensions message1; 291 unittest::TestAllExtensions message1;
360 unittest::TestAllExtensions message2; 292 unittest::TestAllExtensions message2;
361 unittest::TestAllExtensions message3; 293 unittest::TestAllExtensions message3;
362 294
363 TestUtil::SetAllExtensions(&message3); 295 TestUtil::SetAllExtensions(&message3);
364 296
365 const Reflection* reflection = message3.GetReflection(); 297 const Reflection* reflection = message3.GetReflection();
366 std::vector<const FieldDescriptor*> fields; 298 vector<const FieldDescriptor*> fields;
367 reflection->ListFields(message3, &fields); 299 reflection->ListFields(message3, &fields);
368 300
369 reflection->SwapFields(&message1, &message2, fields); 301 reflection->SwapFields(&message1, &message2, fields);
370 302
371 TestUtil::ExpectExtensionsClear(message1); 303 TestUtil::ExpectExtensionsClear(message1);
372 TestUtil::ExpectExtensionsClear(message2); 304 TestUtil::ExpectExtensionsClear(message2);
373 } 305 }
374 306
375 TEST(ExtensionSetTest, SwapExtensionBothFull) { 307 TEST(ExtensionSetTest, SwapExtensionBothFull) {
376 unittest::TestAllExtensions message1; 308 unittest::TestAllExtensions message1;
377 unittest::TestAllExtensions message2; 309 unittest::TestAllExtensions message2;
378 310
379 TestUtil::SetAllExtensions(&message1); 311 TestUtil::SetAllExtensions(&message1);
380 TestUtil::SetAllExtensions(&message2); 312 TestUtil::SetAllExtensions(&message2);
381 313
382 const Reflection* reflection = message1.GetReflection(); 314 const Reflection* reflection = message1.GetReflection();
383 std::vector<const FieldDescriptor*> fields; 315 vector<const FieldDescriptor*> fields;
384 reflection->ListFields(message1, &fields); 316 reflection->ListFields(message1, &fields);
385 317
386 reflection->SwapFields(&message1, &message2, fields); 318 reflection->SwapFields(&message1, &message2, fields);
387 319
388 TestUtil::ExpectAllExtensionsSet(message1); 320 TestUtil::ExpectAllExtensionsSet(message1);
389 TestUtil::ExpectAllExtensionsSet(message2); 321 TestUtil::ExpectAllExtensionsSet(message2);
390 } 322 }
391 323
392 TEST(ExtensionSetTest, ArenaSetAllExtension) { 324 TEST(ExtensionSetTest, ArenaSetAllExtension) {
393 ::google::protobuf::Arena arena1; 325 ::google::protobuf::Arena arena1;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 415
484 unittest::TestAllExtensions* message1 = 416 unittest::TestAllExtensions* message1 =
485 Arena::CreateMessage<unittest::TestAllExtensions>(&arena1); 417 Arena::CreateMessage<unittest::TestAllExtensions>(&arena1);
486 unittest::TestAllExtensions* message2 = 418 unittest::TestAllExtensions* message2 =
487 Arena::CreateMessage<unittest::TestAllExtensions>(arena2); 419 Arena::CreateMessage<unittest::TestAllExtensions>(arena2);
488 420
489 TestUtil::SetAllExtensions(message1); 421 TestUtil::SetAllExtensions(message1);
490 TestUtil::SetAllExtensions(message2); 422 TestUtil::SetAllExtensions(message2);
491 423
492 const Reflection* reflection = message1->GetReflection(); 424 const Reflection* reflection = message1->GetReflection();
493 std::vector<const FieldDescriptor*> fields; 425 vector<const FieldDescriptor*> fields;
494 reflection->ListFields(*message1, &fields); 426 reflection->ListFields(*message1, &fields);
495 reflection->SwapFields(message1, message2, fields); 427 reflection->SwapFields(message1, message2, fields);
496 TestUtil::ExpectAllExtensionsSet(*message1); 428 TestUtil::ExpectAllExtensionsSet(*message1);
497 TestUtil::ExpectAllExtensionsSet(*message2); 429 TestUtil::ExpectAllExtensionsSet(*message2);
498 delete arena2; 430 delete arena2;
499 TestUtil::ExpectAllExtensionsSet(*message1); 431 TestUtil::ExpectAllExtensionsSet(*message1);
500 } 432 }
501 433
502 TEST(ExtensionSetTest, SwapExtensionWithSelf) { 434 TEST(ExtensionSetTest, SwapExtensionWithSelf) {
503 unittest::TestAllExtensions message1; 435 unittest::TestAllExtensions message1;
504 436
505 TestUtil::SetAllExtensions(&message1); 437 TestUtil::SetAllExtensions(&message1);
506 438
507 std::vector<const FieldDescriptor*> fields; 439 vector<const FieldDescriptor*> fields;
508 const Reflection* reflection = message1.GetReflection(); 440 const Reflection* reflection = message1.GetReflection();
509 reflection->ListFields(message1, &fields); 441 reflection->ListFields(message1, &fields);
510 reflection->SwapFields(&message1, &message1, fields); 442 reflection->SwapFields(&message1, &message1, fields);
511 443
512 TestUtil::ExpectAllExtensionsSet(message1); 444 TestUtil::ExpectAllExtensionsSet(message1);
513 } 445 }
514 446
515 TEST(ExtensionSetTest, SerializationToArray) { 447 TEST(ExtensionSetTest, SerializationToArray) {
516 // Serialize as TestAllExtensions and parse as TestAllTypes to insure wire 448 // Serialize as TestAllExtensions and parse as TestAllTypes to insure wire
517 // compatibility of extensions. 449 // compatibility of extensions.
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 EXPECT_LE(min_expected_size, empty_repeated_field_size) << #type; \ 721 EXPECT_LE(min_expected_size, empty_repeated_field_size) << #type; \
790 message.AddExtension(unittest::repeated_##type##_extension, value); \ 722 message.AddExtension(unittest::repeated_##type##_extension, value); \
791 message.AddExtension(unittest::repeated_##type##_extension, value); \ 723 message.AddExtension(unittest::repeated_##type##_extension, value); \
792 EXPECT_EQ(empty_repeated_field_size, message.SpaceUsed()) << #type; \ 724 EXPECT_EQ(empty_repeated_field_size, message.SpaceUsed()) << #type; \
793 message.ClearExtension(unittest::repeated_##type##_extension); \ 725 message.ClearExtension(unittest::repeated_##type##_extension); \
794 for (int i = 0; i < 16; ++i) { \ 726 for (int i = 0; i < 16; ++i) { \
795 message.AddExtension(unittest::repeated_##type##_extension, value); \ 727 message.AddExtension(unittest::repeated_##type##_extension, value); \
796 } \ 728 } \
797 int expected_size = sizeof(cpptype) * (16 - \ 729 int expected_size = sizeof(cpptype) * (16 - \
798 kMinRepeatedFieldAllocationSize) + empty_repeated_field_size; \ 730 kMinRepeatedFieldAllocationSize) + empty_repeated_field_size; \
799 EXPECT_LE(expected_size, message.SpaceUsed()) << #type; \ 731 EXPECT_EQ(expected_size, message.SpaceUsed()) << #type; \
800 } while (0) 732 } while (0)
801 733
802 TEST_REPEATED_EXTENSIONS_SPACE_USED(int32 , int32 , 101); 734 TEST_REPEATED_EXTENSIONS_SPACE_USED(int32 , int32 , 101);
803 TEST_REPEATED_EXTENSIONS_SPACE_USED(int64 , int64 , 102); 735 TEST_REPEATED_EXTENSIONS_SPACE_USED(int64 , int64 , 102);
804 TEST_REPEATED_EXTENSIONS_SPACE_USED(uint32 , uint32, 103); 736 TEST_REPEATED_EXTENSIONS_SPACE_USED(uint32 , uint32, 103);
805 TEST_REPEATED_EXTENSIONS_SPACE_USED(uint64 , uint64, 104); 737 TEST_REPEATED_EXTENSIONS_SPACE_USED(uint64 , uint64, 104);
806 TEST_REPEATED_EXTENSIONS_SPACE_USED(sint32 , int32 , 105); 738 TEST_REPEATED_EXTENSIONS_SPACE_USED(sint32 , int32 , 105);
807 TEST_REPEATED_EXTENSIONS_SPACE_USED(sint64 , int64 , 106); 739 TEST_REPEATED_EXTENSIONS_SPACE_USED(sint64 , int64 , 106);
808 TEST_REPEATED_EXTENSIONS_SPACE_USED(fixed32 , uint32, 107); 740 TEST_REPEATED_EXTENSIONS_SPACE_USED(fixed32 , uint32, 107);
809 TEST_REPEATED_EXTENSIONS_SPACE_USED(fixed64 , uint64, 108); 741 TEST_REPEATED_EXTENSIONS_SPACE_USED(fixed64 , uint64, 108);
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 const Message* prototype = 1198 const Message* prototype =
1267 dynamic_factory.GetPrototype(dynamic_message_extension->message_type()); 1199 dynamic_factory.GetPrototype(dynamic_message_extension->message_type());
1268 EXPECT_EQ(prototype, &sub_message); 1200 EXPECT_EQ(prototype, &sub_message);
1269 } 1201 }
1270 } 1202 }
1271 1203
1272 } // namespace 1204 } // namespace
1273 } // namespace internal 1205 } // namespace internal
1274 } // namespace protobuf 1206 } // namespace protobuf
1275 } // namespace google 1207 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698