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

Side by Side Diff: third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 #include <google/protobuf/compiler/cpp/cpp_unittest.h> 47 #include <google/protobuf/compiler/cpp/cpp_unittest.h>
48 48
49 #include <memory> 49 #include <memory>
50 #ifndef _SHARED_PTR_H 50 #ifndef _SHARED_PTR_H
51 #include <google/protobuf/stubs/shared_ptr.h> 51 #include <google/protobuf/stubs/shared_ptr.h>
52 #endif 52 #endif
53 #include <vector> 53 #include <vector>
54 54
55 #include <google/protobuf/unittest.pb.h> 55 #include <google/protobuf/unittest.pb.h>
56 #include <google/protobuf/unittest_no_arena.pb.h>
57 #include <google/protobuf/unittest_optimize_for.pb.h> 56 #include <google/protobuf/unittest_optimize_for.pb.h>
58 #include <google/protobuf/unittest_embed_optimize_for.pb.h> 57 #include <google/protobuf/unittest_embed_optimize_for.pb.h>
59 #if !defined(GOOGLE_PROTOBUF_CMAKE_BUILD) && !defined(_MSC_VER) 58 #if !defined(GOOGLE_PROTOBUF_CMAKE_BUILD) && !defined(_MSC_VER)
60 // We exclude this large proto from cmake build because it's too large for 59 // We exclude this large proto from cmake build because it's too large for
61 // visual studio to compile (report internal errors). 60 // visual studio to compile (report internal errors).
62 #include <google/protobuf/unittest_enormous_descriptor.pb.h> 61 #include <google/protobuf/unittest_enormous_descriptor.pb.h>
63 #endif 62 #endif
64 #include <google/protobuf/unittest_no_generic_services.pb.h> 63 #include <google/protobuf/unittest_no_generic_services.pb.h>
65 #include <google/protobuf/test_util.h> 64 #include <google/protobuf/test_util.h>
66 #include <google/protobuf/compiler/cpp/cpp_helpers.h> 65 #include <google/protobuf/compiler/cpp/cpp_helpers.h>
67 #include <google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h> 66 #include <google/protobuf/compiler/cpp/cpp_test_bad_identifiers.pb.h>
68 #include <google/protobuf/compiler/importer.h> 67 #include <google/protobuf/compiler/importer.h>
69 #include <google/protobuf/io/coded_stream.h> 68 #include <google/protobuf/io/coded_stream.h>
70 #include <google/protobuf/io/zero_copy_stream_impl.h> 69 #include <google/protobuf/io/zero_copy_stream_impl.h>
71 #include <google/protobuf/arena.h>
72 #include <google/protobuf/descriptor.h> 70 #include <google/protobuf/descriptor.h>
73 #include <google/protobuf/descriptor.pb.h> 71 #include <google/protobuf/descriptor.pb.h>
74 #include <google/protobuf/dynamic_message.h> 72 #include <google/protobuf/dynamic_message.h>
75 73
76 #include <google/protobuf/stubs/callback.h> 74 #include <google/protobuf/stubs/callback.h>
77 #include <google/protobuf/stubs/common.h> 75 #include <google/protobuf/stubs/common.h>
78 #include <google/protobuf/stubs/logging.h> 76 #include <google/protobuf/stubs/logging.h>
79 #include <google/protobuf/stubs/strutil.h> 77 #include <google/protobuf/stubs/strutil.h>
80 #include <google/protobuf/stubs/substitute.h> 78 #include <google/protobuf/stubs/substitute.h>
81 #include <google/protobuf/testing/googletest.h> 79 #include <google/protobuf/testing/googletest.h>
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 Importer importer(&source_tree, &error_collector); 122 Importer importer(&source_tree, &error_collector);
125 123
126 // Import (parse) unittest.proto. 124 // Import (parse) unittest.proto.
127 const FileDescriptor* parsed_descriptor = 125 const FileDescriptor* parsed_descriptor =
128 importer.Import("google/protobuf/unittest.proto"); 126 importer.Import("google/protobuf/unittest.proto");
129 EXPECT_EQ("", error_collector.text_); 127 EXPECT_EQ("", error_collector.text_);
130 ASSERT_TRUE(parsed_descriptor != NULL); 128 ASSERT_TRUE(parsed_descriptor != NULL);
131 129
132 // Test that descriptors are generated correctly by converting them to 130 // Test that descriptors are generated correctly by converting them to
133 // FileDescriptorProtos and comparing. 131 // FileDescriptorProtos and comparing.
134 FileDescriptorProto generated_descriptor_proto, parsed_descriptor_proto; 132 FileDescriptorProto generated_decsriptor_proto, parsed_descriptor_proto;
135 generated_descriptor->CopyTo(&generated_descriptor_proto); 133 generated_descriptor->CopyTo(&generated_decsriptor_proto);
136 parsed_descriptor->CopyTo(&parsed_descriptor_proto); 134 parsed_descriptor->CopyTo(&parsed_descriptor_proto);
137 135
138 EXPECT_EQ(parsed_descriptor_proto.DebugString(), 136 EXPECT_EQ(parsed_descriptor_proto.DebugString(),
139 generated_descriptor_proto.DebugString()); 137 generated_decsriptor_proto.DebugString());
140 } 138 }
141 139
142 #if !defined(GOOGLE_PROTOBUF_CMAKE_BUILD) && !defined(_MSC_VER) 140 #if !defined(GOOGLE_PROTOBUF_CMAKE_BUILD) && !defined(_MSC_VER)
143 // Test that generated code has proper descriptors: 141 // Test that generated code has proper descriptors:
144 // Touch a descriptor generated from an enormous message to validate special 142 // Touch a descriptor generated from an enormous message to validate special
145 // handling for descriptors exceeding the C++ standard's recommended minimum 143 // handling for descriptors exceeding the C++ standard's recommended minimum
146 // limit for string literal size 144 // limit for string literal size
147 TEST(GeneratedDescriptorTest, EnormousDescriptor) { 145 TEST(GeneratedDescriptorTest, EnormousDescriptor) {
148 const Descriptor* generated_descriptor = 146 const Descriptor* generated_descriptor =
149 TestEnormousDescriptor::descriptor(); 147 TestEnormousDescriptor::descriptor();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 const unittest::TestExtremeDefaultValues& extreme_default = 192 const unittest::TestExtremeDefaultValues& extreme_default =
195 unittest::TestExtremeDefaultValues::default_instance(); 193 unittest::TestExtremeDefaultValues::default_instance();
196 194
197 EXPECT_EQ(0.0f, extreme_default.zero_float()); 195 EXPECT_EQ(0.0f, extreme_default.zero_float());
198 EXPECT_EQ(1.0f, extreme_default.one_float()); 196 EXPECT_EQ(1.0f, extreme_default.one_float());
199 EXPECT_EQ(1.5f, extreme_default.small_float()); 197 EXPECT_EQ(1.5f, extreme_default.small_float());
200 EXPECT_EQ(-1.0f, extreme_default.negative_one_float()); 198 EXPECT_EQ(-1.0f, extreme_default.negative_one_float());
201 EXPECT_EQ(-1.5f, extreme_default.negative_float()); 199 EXPECT_EQ(-1.5f, extreme_default.negative_float());
202 EXPECT_EQ(2.0e8f, extreme_default.large_float()); 200 EXPECT_EQ(2.0e8f, extreme_default.large_float());
203 EXPECT_EQ(-8e-28f, extreme_default.small_negative_float()); 201 EXPECT_EQ(-8e-28f, extreme_default.small_negative_float());
204 EXPECT_EQ(std::numeric_limits<double>::infinity(), 202 EXPECT_EQ(numeric_limits<double>::infinity(),
205 extreme_default.inf_double()); 203 extreme_default.inf_double());
206 EXPECT_EQ(-std::numeric_limits<double>::infinity(), 204 EXPECT_EQ(-numeric_limits<double>::infinity(),
207 extreme_default.neg_inf_double()); 205 extreme_default.neg_inf_double());
208 EXPECT_TRUE(extreme_default.nan_double() != extreme_default.nan_double()); 206 EXPECT_TRUE(extreme_default.nan_double() != extreme_default.nan_double());
209 EXPECT_EQ(std::numeric_limits<float>::infinity(), 207 EXPECT_EQ(numeric_limits<float>::infinity(),
210 extreme_default.inf_float()); 208 extreme_default.inf_float());
211 EXPECT_EQ(-std::numeric_limits<float>::infinity(), 209 EXPECT_EQ(-numeric_limits<float>::infinity(),
212 extreme_default.neg_inf_float()); 210 extreme_default.neg_inf_float());
213 EXPECT_TRUE(extreme_default.nan_float() != extreme_default.nan_float()); 211 EXPECT_TRUE(extreme_default.nan_float() != extreme_default.nan_float());
214 } 212 }
215 213
216 TEST(GeneratedMessageTest, Trigraph) { 214 TEST(GeneratedMessageTest, Trigraph) {
217 const unittest::TestExtremeDefaultValues& extreme_default = 215 const unittest::TestExtremeDefaultValues& extreme_default =
218 unittest::TestExtremeDefaultValues::default_instance(); 216 unittest::TestExtremeDefaultValues::default_instance();
219 217
220 EXPECT_EQ("? ? ?? ?? ??? ?\?/ ?\?-", extreme_default.cpp_trigraph()); 218 EXPECT_EQ("? ? ?? ?? ??? ?\?/ ?\?-", extreme_default.cpp_trigraph());
221 } 219 }
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 // Verify that we can use a char*,length to add to a repeated string field. 412 // Verify that we can use a char*,length to add to a repeated string field.
415 message.add_repeated_string("abcdef", 3); 413 message.add_repeated_string("abcdef", 3);
416 EXPECT_EQ(1, message.repeated_string_size()); 414 EXPECT_EQ(1, message.repeated_string_size());
417 EXPECT_EQ("abc", message.repeated_string(0)); 415 EXPECT_EQ("abc", message.repeated_string(0));
418 416
419 // Verify that we can use a char*,length to set a repeated string field. 417 // Verify that we can use a char*,length to set a repeated string field.
420 message.set_repeated_string(0, "wxyz", 2); 418 message.set_repeated_string(0, "wxyz", 2);
421 EXPECT_EQ("wx", message.repeated_string(0)); 419 EXPECT_EQ("wx", message.repeated_string(0));
422 } 420 }
423 421
424 #if LANG_CXX11
425 TEST(GeneratedMessageTest, StringMove) {
426 // Verify that we trigger the move behavior on a scalar setter.
427 protobuf_unittest_no_arena::TestAllTypes message;
428 {
429 string tmp(32, 'a');
430
431 const char* old_data = tmp.data();
432 message.set_optional_string(std::move(tmp));
433 const char* new_data = message.optional_string().data();
434
435 EXPECT_EQ(old_data, new_data);
436 EXPECT_EQ(string(32, 'a'), message.optional_string());
437
438 string tmp2(32, 'b');
439 old_data = tmp2.data();
440 message.set_optional_string(std::move(tmp2));
441 new_data = message.optional_string().data();
442
443 EXPECT_EQ(old_data, new_data);
444 EXPECT_EQ(string(32, 'b'), message.optional_string());
445 }
446
447 // Verify that we trigger the move behavior on a oneof setter.
448 {
449 string tmp(32, 'a');
450
451 const char* old_data = tmp.data();
452 message.set_oneof_string(std::move(tmp));
453 const char* new_data = message.oneof_string().data();
454
455 EXPECT_EQ(old_data, new_data);
456 EXPECT_EQ(string(32, 'a'), message.oneof_string());
457
458 string tmp2(32, 'b');
459 old_data = tmp2.data();
460 message.set_oneof_string(std::move(tmp2));
461 new_data = message.oneof_string().data();
462
463 EXPECT_EQ(old_data, new_data);
464 EXPECT_EQ(string(32, 'b'), message.oneof_string());
465 }
466 }
467 #endif
468
469 422
470 TEST(GeneratedMessageTest, CopyFrom) { 423 TEST(GeneratedMessageTest, CopyFrom) {
471 unittest::TestAllTypes message1, message2; 424 unittest::TestAllTypes message1, message2;
472 425
473 TestUtil::SetAllFields(&message1); 426 TestUtil::SetAllFields(&message1);
474 message2.CopyFrom(message1); 427 message2.CopyFrom(message1);
475 TestUtil::ExpectAllFieldsSet(message2); 428 TestUtil::ExpectAllFieldsSet(message2);
476 429
477 // Copying from self should be a no-op. 430 // Copying from self should be a no-op.
478 message2.CopyFrom(message2); 431 message2.CopyFrom(message2);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 } 511 }
559 512
560 TEST(GeneratedMessageTest, CopyConstructor) { 513 TEST(GeneratedMessageTest, CopyConstructor) {
561 unittest::TestAllTypes message1; 514 unittest::TestAllTypes message1;
562 TestUtil::SetAllFields(&message1); 515 TestUtil::SetAllFields(&message1);
563 516
564 unittest::TestAllTypes message2(message1); 517 unittest::TestAllTypes message2(message1);
565 TestUtil::ExpectAllFieldsSet(message2); 518 TestUtil::ExpectAllFieldsSet(message2);
566 } 519 }
567 520
568 TEST(GeneratedMessageTest, CopyConstructorWithArenas) {
569 Arena arena;
570 unittest::TestAllTypes* message1 =
571 Arena::CreateMessage<unittest::TestAllTypes>(&arena);
572 TestUtil::SetAllFields(message1);
573
574 unittest::TestAllTypes message2_stack(*message1);
575 TestUtil::ExpectAllFieldsSet(message2_stack);
576
577 google::protobuf::scoped_ptr<unittest::TestAllTypes> message2_heap(
578 new unittest::TestAllTypes(*message1));
579 TestUtil::ExpectAllFieldsSet(*message2_heap);
580
581 arena.Reset();
582
583 // Verify that the copies are still intact.
584 TestUtil::ExpectAllFieldsSet(message2_stack);
585 TestUtil::ExpectAllFieldsSet(*message2_heap);
586 }
587
588 TEST(GeneratedMessageTest, CopyAssignmentOperator) { 521 TEST(GeneratedMessageTest, CopyAssignmentOperator) {
589 unittest::TestAllTypes message1; 522 unittest::TestAllTypes message1;
590 TestUtil::SetAllFields(&message1); 523 TestUtil::SetAllFields(&message1);
591 524
592 unittest::TestAllTypes message2; 525 unittest::TestAllTypes message2;
593 message2 = message1; 526 message2 = message1;
594 TestUtil::ExpectAllFieldsSet(message2); 527 TestUtil::ExpectAllFieldsSet(message2);
595 528
596 // Make sure that self-assignment does something sane. 529 // Make sure that self-assignment does something sane.
597 message2.operator=(message2); 530 message2.operator=(message2);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 message1.add_repeated_int32(i); 593 message1.add_repeated_int32(i);
661 594
662 message1.MergeFrom(message2); 595 message1.MergeFrom(message2);
663 596
664 TestUtil::ExpectAllFieldsSet(message1); 597 TestUtil::ExpectAllFieldsSet(message1);
665 } 598 }
666 599
667 #if !defined(PROTOBUF_TEST_NO_DESCRIPTORS) || \ 600 #if !defined(PROTOBUF_TEST_NO_DESCRIPTORS) || \
668 !defined(GOOGLE_PROTOBUF_NO_RTTI) 601 !defined(GOOGLE_PROTOBUF_NO_RTTI)
669 #ifdef PROTOBUF_HAS_DEATH_TEST 602 #ifdef PROTOBUF_HAS_DEATH_TEST
670 #ifndef NDEBUG
671 603
672 TEST(GeneratedMessageTest, MergeFromSelf) { 604 TEST(GeneratedMessageTest, MergeFromSelf) {
673 unittest::TestAllTypes message; 605 unittest::TestAllTypes message;
674 EXPECT_DEATH(message.MergeFrom(message), "pb[.]cc.*Check failed:"); 606 EXPECT_DEATH(message.MergeFrom(message), "Check failed:.*pb[.]cc");
675 EXPECT_DEATH(message.MergeFrom(implicit_cast<const Message&>(message)), 607 EXPECT_DEATH(message.MergeFrom(implicit_cast<const Message&>(message)),
676 "pb[.]cc.*Check failed:"); 608 "Check failed:.*pb[.]cc");
677 } 609 }
678 610
679 #endif // NDEBUG
680 #endif // PROTOBUF_HAS_DEATH_TEST 611 #endif // PROTOBUF_HAS_DEATH_TEST
681 #endif // !PROTOBUF_TEST_NO_DESCRIPTORS || !GOOGLE_PROTOBUF_NO_RTTI 612 #endif // !PROTOBUF_TEST_NO_DESCRIPTORS || !GOOGLE_PROTOBUF_NO_RTTI
682 613
683 // Test the generated SerializeWithCachedSizesToArray(), 614 // Test the generated SerializeWithCachedSizesToArray(),
684 TEST(GeneratedMessageTest, SerializationToArray) { 615 TEST(GeneratedMessageTest, SerializationToArray) {
685 unittest::TestAllTypes message1, message2; 616 unittest::TestAllTypes message1, message2;
686 string data; 617 string data;
687 TestUtil::SetAllFields(&message1); 618 TestUtil::SetAllFields(&message1);
688 int size = message1.ByteSize(); 619 int size = message1.ByteSize();
689 data.resize(size); 620 data.resize(size);
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
1314 void NotifyOnCancel(Closure* callback) { 1245 void NotifyOnCancel(Closure* callback) {
1315 ADD_FAILURE() << "NotifyOnCancel() not expected during this test."; 1246 ADD_FAILURE() << "NotifyOnCancel() not expected during this test.";
1316 } 1247 }
1317 }; 1248 };
1318 1249
1319 GeneratedServiceTest() 1250 GeneratedServiceTest()
1320 : descriptor_(unittest::TestService::descriptor()), 1251 : descriptor_(unittest::TestService::descriptor()),
1321 foo_(descriptor_->FindMethodByName("Foo")), 1252 foo_(descriptor_->FindMethodByName("Foo")),
1322 bar_(descriptor_->FindMethodByName("Bar")), 1253 bar_(descriptor_->FindMethodByName("Bar")),
1323 stub_(&mock_channel_), 1254 stub_(&mock_channel_),
1324 done_(NewPermanentCallback(&DoNothing)) {} 1255 done_(::google::protobuf::internal::NewPermanentCallback(&DoNothing)) {}
1325 1256
1326 virtual void SetUp() { 1257 virtual void SetUp() {
1327 ASSERT_TRUE(foo_ != NULL); 1258 ASSERT_TRUE(foo_ != NULL);
1328 ASSERT_TRUE(bar_ != NULL); 1259 ASSERT_TRUE(bar_ != NULL);
1329 } 1260 }
1330 1261
1331 const ServiceDescriptor* descriptor_; 1262 const ServiceDescriptor* descriptor_;
1332 const MethodDescriptor* foo_; 1263 const MethodDescriptor* foo_;
1333 const MethodDescriptor* bar_; 1264 const MethodDescriptor* bar_;
1334 1265
(...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
2199 DescriptorPool::generated_pool()->InternalIsFileLoaded( 2130 DescriptorPool::generated_pool()->InternalIsFileLoaded(
2200 "google/protobuf/unittest.proto")); 2131 "google/protobuf/unittest.proto"));
2201 } 2132 }
2202 2133
2203 } // namespace cpp_unittest 2134 } // namespace cpp_unittest
2204 2135
2205 } // namespace cpp 2136 } // namespace cpp
2206 } // namespace compiler 2137 } // namespace compiler
2207 } // namespace protobuf 2138 } // namespace protobuf
2208 } // namespace google 2139 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698