40 #include <google/protobuf/map_lite_unittest.pb.h>
42 #include <google/protobuf/unittest_lite.pb.h>
60 unittest::TestAllTypesLite* msg2,
61 unittest::TestAllTypesLite* msg3) {
62 msg1->set_optional_int32(1);
63 msg2->set_optional_int64(2);
64 msg3->set_optional_int32(3);
65 msg3->set_optional_string(
"hello");
69 unittest::TestEmptyMessageLite* empty_message) {
70 protobuf_unittest::TestAllTypesLite
message;
74 empty_message->ParseFromString(
data);
78 unittest::TestEmptyMessageLite* empty_message) {
79 protobuf_unittest::TestAllTypesLite
message;
81 message.set_optional_int32(101);
82 message.set_optional_int64(102);
83 message.set_optional_uint32(103);
84 message.set_optional_uint64(104);
86 empty_message->ParseFromString(
data);
93 protobuf_unittest::TestAllTypesLite
message, message2, message3;
98 message3.ParseFromString(
data);
112 protobuf_unittest::TestAllExtensionsLite
message, message2, message3;
117 message3.ParseFromString(extensions_data);
132 protobuf_unittest::TestPackedTypesLite
message, message2, message3;
136 packed_data =
message.SerializeAsString();
137 message3.ParseFromString(packed_data);
148 protobuf_unittest::TestPackedExtensionsLite
message, message2, message3;
153 EXPECT_EQ(packed_extensions_data, packed_data);
154 message3.ParseFromString(packed_extensions_data);
171 unittest::TestParsingMergeLite::RepeatedFieldsGenerator generator;
172 unittest::TestAllTypesLite* msg1;
173 unittest::TestAllTypesLite* msg2;
174 unittest::TestAllTypesLite* msg3;
176 #define ASSIGN_REPEATED_FIELD(FIELD) \
177 msg1 = generator.add_##FIELD(); \
178 msg2 = generator.add_##FIELD(); \
179 msg3 = generator.add_##FIELD(); \
180 AssignParsingMergeMessages(msg1, msg2, msg3)
188 #undef ASSIGN_REPEATED_FIELD
189 #define ASSIGN_REPEATED_GROUP(FIELD) \
190 msg1 = generator.add_##FIELD()->mutable_field1(); \
191 msg2 = generator.add_##FIELD()->mutable_field1(); \
192 msg3 = generator.add_##FIELD()->mutable_field1(); \
193 AssignParsingMergeMessages(msg1, msg2, msg3)
198 #undef ASSIGN_REPEATED_GROUP
201 generator.SerializeToString(&
buffer);
202 unittest::TestParsingMergeLite parsing_merge;
203 parsing_merge.ParseFromString(
buffer);
209 parsing_merge.optionalgroup().optional_group_all_types());
211 unittest::TestParsingMergeLite::optional_ext));
214 EXPECT_EQ(parsing_merge.repeated_all_types_size(), 3);
215 EXPECT_EQ(parsing_merge.repeatedgroup_size(), 3);
217 unittest::TestParsingMergeLite::repeated_ext),
227 protobuf_unittest::TestAllTypesLite
message, message2;
228 protobuf_unittest::TestEmptyMessageLite empty_message;
234 data = empty_message.SerializeAsString();
236 data = message2.SerializeAsString();
247 protobuf_unittest::TestAllExtensionsLite
message, message2;
248 protobuf_unittest::TestEmptyMessageLite empty_message;
252 empty_message.ParseFromString(
data);
254 data = empty_message.SerializeAsString();
255 message2.ParseFromString(
data);
256 data = message2.SerializeAsString();
267 protobuf_unittest::TestPackedTypesLite
message, message2;
268 protobuf_unittest::TestEmptyMessageLite empty_message;
272 empty_message.ParseFromString(
data);
274 data = empty_message.SerializeAsString();
275 message2.ParseFromString(
data);
276 data = message2.SerializeAsString();
287 protobuf_unittest::TestPackedExtensionsLite
message, message2;
288 protobuf_unittest::TestEmptyMessageLite empty_message;
292 empty_message.ParseFromString(
data);
294 data = empty_message.SerializeAsString();
295 message2.ParseFromString(
data);
296 data = message2.SerializeAsString();
308 protobuf_unittest::TestEmptyMessageLite empty_message, empty_message2;
311 data = empty_message.SerializeAsString();
312 std::string data2 = empty_message2.SerializeAsString();
313 empty_message.Swap(&empty_message2);
315 EXPECT_EQ(data2, empty_message.SerializeAsString());
324 protobuf_unittest::TestEmptyMessageLite empty_message;
326 data = empty_message.SerializeAsString();
327 empty_message.Swap(&empty_message);
337 protobuf_unittest::TestAllTypesLite
message, message2;
338 protobuf_unittest::TestEmptyMessageLite empty_message, empty_message2;
339 message.set_optional_int32(101);
340 message.add_repeated_int32(201);
341 message.set_optional_nested_enum(unittest::TestAllTypesLite::BAZ);
342 message2.set_optional_int64(102);
343 message2.add_repeated_int64(202);
344 message2.set_optional_foreign_enum(unittest::FOREIGN_LITE_BAZ);
347 empty_message.ParseFromString(
data);
348 data = message2.SerializeAsString();
349 empty_message2.ParseFromString(
data);
351 empty_message.MergeFrom(empty_message2);
353 data = empty_message.SerializeAsString();
354 message2.ParseFromString(
data);
367 protobuf_unittest::TestAllTypesLite
message;
373 protobuf_unittest::TestAllTypesLite::kOptionalNestedEnumFieldNumber,
377 protobuf_unittest::TestAllTypesLite::kRepeatedNestedEnumFieldNumber,
392 protobuf_unittest::TestEmptyMessageLite empty_message;
394 empty_message.Clear();
395 EXPECT_EQ(0, empty_message.unknown_fields().size());
406 protobuf_unittest::TestMapLite
message;
421 protobuf_unittest::TestMapLite
message;
433 protobuf_unittest::TestMapLite
message;
446 protobuf_unittest::TestMessageMapLite
message;
458 protobuf_unittest::TestMapLite message1, message2;
461 message2.CopyFrom(message1);
465 message2.CopyFrom(message2);
475 protobuf_unittest::TestMessageMapLite message1, message2;
477 (*message1.mutable_map_int32_message())[0].add_repeated_int32(100);
478 (*message2.mutable_map_int32_message())[0].add_repeated_int32(101);
480 message1.CopyFrom(message2);
483 EXPECT_EQ(1, message1.map_int32_message().at(0).repeated_int32_size());
484 EXPECT_EQ(101, message1.map_int32_message().at(0).repeated_int32(0));
493 protobuf_unittest::TestMapLite message1, message2;
499 message1.Swap(&message2);
510 protobuf_unittest::TestMapLite
message;
525 protobuf_unittest::TestMapLite message1, message2;
531 message1.Swap(&message2);
542 protobuf_unittest::TestMapLite message1;
545 protobuf_unittest::TestMapLite message2(message1);
555 protobuf_unittest::TestMapLite message1;
558 protobuf_unittest::TestMapLite message2;
563 message2.operator=(message2);
573 protobuf_unittest::TestMapLite message1, message2;
578 (*message2.mutable_map_int32_int32())[1] = 1;
579 message1.mutable_map_int32_int32()->erase(1);
582 (*message2.mutable_map_int32_double())[1] = 1;
583 (*message1.mutable_map_int32_double())[1] = 2;
585 message1.MergeFrom(message2);
595 protobuf_unittest::TestMessageMapLite message1, message2;
597 (*message1.mutable_map_int32_message())[0].add_repeated_int32(100);
598 (*message2.mutable_map_int32_message())[0].add_repeated_int32(101);
600 message1.MergeFrom(message2);
603 EXPECT_EQ(1, message1.map_int32_message().at(0).repeated_int32_size());
604 EXPECT_EQ(101, message1.map_int32_message().at(0).repeated_int32(0));
613 protobuf_unittest::TestMapLite message1, message2;
616 int size = message1.ByteSize();
631 protobuf_unittest::TestMapLite message1, message2;
633 int size = message1.ByteSize();
640 message1.SerializeWithCachedSizes(&output_stream);
655 protobuf_unittest::TestEnumMapPlusExtraLite from;
656 (*from.mutable_known_map_field())[0] =
657 protobuf_unittest::E_PROTO2_MAP_ENUM_FOO_LITE;
658 (*from.mutable_unknown_map_field())[0] =
659 protobuf_unittest::E_PROTO2_MAP_ENUM_EXTRA_LITE;
661 from.SerializeToString(&
data);
663 protobuf_unittest::TestEnumMapLite to;
665 EXPECT_EQ(0, to.unknown_map_field().size());
667 ASSERT_EQ(1, to.known_map_field().size());
668 EXPECT_EQ(protobuf_unittest::PROTO2_MAP_ENUM_FOO_LITE,
669 to.known_map_field().at(0));
673 to.SerializeToString(&
data);
675 ASSERT_EQ(1, from.known_map_field().size());
676 EXPECT_EQ(protobuf_unittest::E_PROTO2_MAP_ENUM_FOO_LITE,
677 from.known_map_field().at(0));
678 ASSERT_EQ(1, from.unknown_map_field().size());
679 EXPECT_EQ(protobuf_unittest::E_PROTO2_MAP_ENUM_EXTRA_LITE,
680 from.unknown_map_field().at(0));
689 protobuf_unittest::TestMapLite
message;
703 protobuf_unittest::TestMapLite
message;
711 message.map_int32_int32().end());
721 protobuf_unittest::TestMapLite
message;
737 protobuf_unittest::TestMapLite
message;
753 protobuf_unittest::TestMapLite
message;
761 message.map_int32_int32().end());
771 protobuf_unittest::TestMapLite
message;
779 message.map_int32_int32().end());
789 protobuf_unittest::TestMapLite
message;
805 protobuf_unittest::TestMapLite
message;
819 protobuf_unittest::TestRequiredMessageMapLite map_message;
822 (*map_message.mutable_map_field())[0];
826 (*map_message.mutable_map_field())[0].set_a(0);
827 (*map_message.mutable_map_field())[0].set_b(0);
828 (*map_message.mutable_map_field())[0].set_c(0);
839 protobuf_unittest::V2MessageLite v2_message;
840 v2_message.set_int_field(800);
842 v2_message.set_enum_field(protobuf_unittest::V2_SECOND);
843 std::string v2_bytes = v2_message.SerializeAsString();
845 protobuf_unittest::V1MessageLite v1_message;
846 v1_message.ParseFromString(v2_bytes);
848 EXPECT_EQ(v1_message.int_field(), v2_message.int_field());
851 EXPECT_EQ(v1_message.enum_field(), protobuf_unittest::V1_FIRST);
854 std::string v1_bytes = v1_message.SerializeAsString();
856 protobuf_unittest::V2MessageLite same_v2_message;
857 same_v2_message.ParseFromString(v1_bytes);
859 EXPECT_EQ(v2_message.int_field(), same_v2_message.int_field());
860 EXPECT_EQ(v2_message.enum_field(), same_v2_message.enum_field());
867 protobuf_unittest::TestOneofParsingLite message1;
869 message1.set_oneof_int32(17);
871 EXPECT_TRUE(message1.SerializeToString(&serialized));
875 protobuf_unittest::TestOneofParsingLite message2;
876 message2.mutable_oneof_submessage();
879 EXPECT_TRUE(message2.MergeFromCodedStream(&input_stream));
885 protobuf_unittest::TestOneofParsingLite message2;
886 message2.set_oneof_string(
"string");
889 EXPECT_TRUE(message2.MergeFromCodedStream(&input_stream));
895 protobuf_unittest::TestOneofParsingLite message2;
896 message2.set_oneof_bytes(
"bytes");
899 EXPECT_TRUE(message2.MergeFromCodedStream(&input_stream));
910 protobuf_unittest::TestOneofParsingLite original;
911 original.set_oneof_int32(17);
913 EXPECT_TRUE(original.SerializeToString(&serialized));
914 protobuf_unittest::TestOneofParsingLite parsed;
915 for (
int i = 0;
i < 2; ++
i) {
919 EXPECT_TRUE(parsed.MergeFromCodedStream(&input_stream));
926 protobuf_unittest::TestOneofParsingLite original;
927 original.mutable_oneof_submessage()->set_optional_int32(5);
929 EXPECT_TRUE(original.SerializeToString(&serialized));
930 protobuf_unittest::TestOneofParsingLite parsed;
931 for (
int i = 0;
i < 2; ++
i) {
935 EXPECT_TRUE(parsed.MergeFromCodedStream(&input_stream));
936 EXPECT_EQ(5, parsed.oneof_submessage().optional_int32());
942 protobuf_unittest::TestOneofParsingLite original;
943 original.set_oneof_string(
"string");
945 EXPECT_TRUE(original.SerializeToString(&serialized));
946 protobuf_unittest::TestOneofParsingLite parsed;
947 for (
int i = 0;
i < 2; ++
i) {
951 EXPECT_TRUE(parsed.MergeFromCodedStream(&input_stream));
952 EXPECT_EQ(
"string", parsed.oneof_string());
958 protobuf_unittest::TestOneofParsingLite original;
959 original.set_oneof_bytes(
"bytes");
961 EXPECT_TRUE(original.SerializeToString(&serialized));
962 protobuf_unittest::TestOneofParsingLite parsed;
963 for (
int i = 0;
i < 2; ++
i) {
967 EXPECT_TRUE(parsed.MergeFromCodedStream(&input_stream));
968 EXPECT_EQ(
"bytes", parsed.oneof_bytes());
974 protobuf_unittest::TestOneofParsingLite original;
975 original.set_oneof_enum(protobuf_unittest::V2_SECOND);
977 EXPECT_TRUE(original.SerializeToString(&serialized));
978 protobuf_unittest::TestOneofParsingLite parsed;
979 for (
int i = 0;
i < 2; ++
i) {
983 EXPECT_TRUE(parsed.MergeFromCodedStream(&input_stream));
984 EXPECT_EQ(protobuf_unittest::V2_SECOND, parsed.oneof_enum());
988 std::cout <<
"PASS" << std::endl;
995 protobuf_unittest::ForeignMessageLite
a;
999 EXPECT_TRUE(
a.MergePartialFromCodedStream(&input_stream));
1014 protobuf_unittest::PackedInt32 packed;
1015 packed.add_repeated_int32(42);
1017 ASSERT_TRUE(packed.SerializeToString(&serialized));
1019 protobuf_unittest::NonPackedInt32 non_packed;
1020 ASSERT_TRUE(non_packed.ParseFromString(serialized));
1021 ASSERT_EQ(1, non_packed.repeated_int32_size());
1022 EXPECT_EQ(42, non_packed.repeated_int32(0));
1026 protobuf_unittest::NonPackedFixed32 non_packed;
1027 non_packed.add_repeated_fixed32(42);
1029 ASSERT_TRUE(non_packed.SerializeToString(&serialized));
1031 protobuf_unittest::PackedFixed32 packed;
1033 ASSERT_EQ(1, packed.repeated_fixed32_size());
1034 EXPECT_EQ(42, packed.repeated_fixed32(0));
1040 auto msg = Arena::CreateMessage<protobuf_unittest::TestMapLite>(&arena);
1048 "\202\1\15\10\1\200\200\200\200\200\200\200\200\200\200\1"));
1052 protobuf_unittest::TestAllTypesLite msg;
1059 static const char kWireFormat[] =
"\204\1";
1065 #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
1066 EXPECT_TRUE(msg.MergePartialFromCodedStream(&cis));
1074 static const char kWireFormat[] =
"\214";
1079 #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
1086 protobuf_unittest::TestAllTypesLite message1, message2;
1091 EXPECT_EQ(message1.DebugString(), message1.ShortDebugString());
1097 EXPECT_NE(message1.DebugString(), message2.DebugString());
1101 EXPECT_EQ(
"FOREIGN_LITE_FOO", protobuf_unittest::ForeignEnumLite_Name(
1102 protobuf_unittest::FOREIGN_LITE_FOO));
1103 EXPECT_EQ(
"FOREIGN_LITE_BAR", protobuf_unittest::ForeignEnumLite_Name(
1104 protobuf_unittest::FOREIGN_LITE_BAR));
1105 EXPECT_EQ(
"FOREIGN_LITE_BAZ", protobuf_unittest::ForeignEnumLite_Name(
1106 protobuf_unittest::FOREIGN_LITE_BAZ));
1107 EXPECT_EQ(
"", protobuf_unittest::ForeignEnumLite_Name(0));
1108 EXPECT_EQ(
"", protobuf_unittest::ForeignEnumLite_Name(999));
1111 TEST(Lite, NestedEnumValueToName) {
1112 EXPECT_EQ(
"FOO", protobuf_unittest::TestAllTypesLite::NestedEnum_Name(
1113 protobuf_unittest::TestAllTypesLite::FOO));
1114 EXPECT_EQ(
"BAR", protobuf_unittest::TestAllTypesLite::NestedEnum_Name(
1115 protobuf_unittest::TestAllTypesLite::BAR));
1116 EXPECT_EQ(
"BAZ", protobuf_unittest::TestAllTypesLite::NestedEnum_Name(
1117 protobuf_unittest::TestAllTypesLite::BAZ));
1118 EXPECT_EQ(
"", protobuf_unittest::TestAllTypesLite::NestedEnum_Name(0));
1119 EXPECT_EQ(
"", protobuf_unittest::TestAllTypesLite::NestedEnum_Name(999));
1123 protobuf_unittest::ForeignEnumLite
value;
1126 protobuf_unittest::ForeignEnumLite_Parse(
"FOREIGN_LITE_FOO", &
value));
1130 protobuf_unittest::ForeignEnumLite_Parse(
"FOREIGN_LITE_BAR", &
value));
1134 protobuf_unittest::ForeignEnumLite_Parse(
"FOREIGN_LITE_BAZ", &
value));
1140 protobuf_unittest::ForeignEnumLite_Parse(
"FOREIGN_LITE_C", &
value));
1144 TEST(Lite, NestedEnumNameToValue) {
1145 protobuf_unittest::TestAllTypesLite::NestedEnum
value;
1148 protobuf_unittest::TestAllTypesLite::NestedEnum_Parse(
"FOO", &
value));
1152 protobuf_unittest::TestAllTypesLite::NestedEnum_Parse(
"BAR", &
value));
1156 protobuf_unittest::TestAllTypesLite::NestedEnum_Parse(
"BAZ", &
value));
1161 protobuf_unittest::TestAllTypesLite::NestedEnum_Parse(
"A", &
value));
1163 protobuf_unittest::TestAllTypesLite::NestedEnum_Parse(
"C", &
value));
1165 protobuf_unittest::TestAllTypesLite::NestedEnum_Parse(
"G", &
value));
1171 EXPECT_EQ(
"FOO1", protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Name(
1172 protobuf_unittest::DupEnum::FOO1));
1173 EXPECT_EQ(
"FOO1", protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Name(
1174 protobuf_unittest::DupEnum::FOO2));
1175 EXPECT_EQ(
"BAR1", protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Name(
1176 protobuf_unittest::DupEnum::BAR1));
1177 EXPECT_EQ(
"BAR1", protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Name(
1178 protobuf_unittest::DupEnum::BAR2));
1179 EXPECT_EQ(
"BAZ", protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Name(
1180 protobuf_unittest::DupEnum::BAZ));
1181 EXPECT_EQ(
"", protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Name(999));
1183 protobuf_unittest::DupEnum::TestEnumWithDupValueLite
value;
1185 protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Parse(
"FOO1", &
value));
1188 value =
static_cast<protobuf_unittest::DupEnum::TestEnumWithDupValueLite
>(0);
1190 protobuf_unittest::DupEnum::TestEnumWithDupValueLite_Parse(
"FOO2", &
value));