Index: third_party/protobuf/src/google/protobuf/wire_format_unittest.cc |
diff --git a/third_party/protobuf/src/google/protobuf/wire_format_unittest.cc b/third_party/protobuf/src/google/protobuf/wire_format_unittest.cc |
index aef22b2936d8f5da89117fd4f0259c4be974af5f..9422f9abc73207621698638a12da860e7156df8c 100644 |
--- a/third_party/protobuf/src/google/protobuf/wire_format_unittest.cc |
+++ b/third_party/protobuf/src/google/protobuf/wire_format_unittest.cc |
@@ -1,6 +1,6 @@ |
// Protocol Buffers - Google's data interchange format |
// Copyright 2008 Google Inc. All rights reserved. |
-// https://developers.google.com/protocol-buffers/ |
+// http://code.google.com/p/protobuf/ |
// |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
@@ -38,7 +38,6 @@ |
#include <google/protobuf/io/zero_copy_stream_impl.h> |
#include <google/protobuf/io/coded_stream.h> |
#include <google/protobuf/unittest.pb.h> |
-#include <google/protobuf/unittest_proto3_arena.pb.h> |
#include <google/protobuf/unittest_mset.pb.h> |
#include <google/protobuf/test_util.h> |
@@ -176,43 +175,6 @@ TEST(WireFormatTest, ParsePackedExtensions) { |
TestUtil::ExpectPackedExtensionsSet(dest); |
} |
-TEST(WireFormatTest, ParseOneof) { |
- unittest::TestOneof2 source, dest; |
- string data; |
- |
- // Serialize using the generated code. |
- TestUtil::SetOneof1(&source); |
- source.SerializeToString(&data); |
- |
- // Parse using WireFormat. |
- io::ArrayInputStream raw_input(data.data(), data.size()); |
- io::CodedInputStream input(&raw_input); |
- WireFormat::ParseAndMergePartial(&input, &dest); |
- |
- // Check. |
- TestUtil::ExpectOneofSet1(dest); |
-} |
- |
-TEST(WireFormatTest, OneofOnlySetLast) { |
- unittest::TestOneofBackwardsCompatible source; |
- unittest::TestOneof oneof_dest; |
- string data; |
- |
- // Set two fields |
- source.set_foo_int(100); |
- source.set_foo_string("101"); |
- |
- // Serialize and parse to oneof message. |
- source.SerializeToString(&data); |
- io::ArrayInputStream raw_input(data.data(), data.size()); |
- io::CodedInputStream input(&raw_input); |
- WireFormat::ParseAndMergePartial(&input, &oneof_dest); |
- |
- // Only the last field is set. |
- EXPECT_FALSE(oneof_dest.has_foo_int()); |
- EXPECT_TRUE(oneof_dest.has_foo_string()); |
-} |
- |
TEST(WireFormatTest, ByteSize) { |
unittest::TestAllTypes message; |
TestUtil::SetAllFields(&message); |
@@ -255,18 +217,6 @@ TEST(WireFormatTest, ByteSizePackedExtensions) { |
EXPECT_EQ(0, WireFormat::ByteSize(message)); |
} |
-TEST(WireFormatTest, ByteSizeOneof) { |
- unittest::TestOneof2 message; |
- TestUtil::SetOneof1(&message); |
- |
- EXPECT_EQ(message.ByteSize(), |
- WireFormat::ByteSize(message)); |
- message.Clear(); |
- |
- EXPECT_EQ(0, message.ByteSize()); |
- EXPECT_EQ(0, WireFormat::ByteSize(message)); |
-} |
- |
TEST(WireFormatTest, Serialize) { |
unittest::TestAllTypes message; |
string generated_data; |
@@ -361,36 +311,6 @@ TEST(WireFormatTest, SerializeFieldsAndExtensions) { |
TestUtil::ExpectAllFieldsAndExtensionsInOrder(generated_data); |
} |
-TEST(WireFormatTest, SerializeOneof) { |
- unittest::TestOneof2 message; |
- string generated_data; |
- string dynamic_data; |
- |
- TestUtil::SetOneof1(&message); |
- int size = message.ByteSize(); |
- |
- // Serialize using the generated code. |
- { |
- io::StringOutputStream raw_output(&generated_data); |
- io::CodedOutputStream output(&raw_output); |
- message.SerializeWithCachedSizes(&output); |
- ASSERT_FALSE(output.HadError()); |
- } |
- |
- // Serialize using WireFormat. |
- { |
- io::StringOutputStream raw_output(&dynamic_data); |
- io::CodedOutputStream output(&raw_output); |
- WireFormat::SerializeWithCachedSizes(message, size, &output); |
- ASSERT_FALSE(output.HadError()); |
- } |
- |
- // Should be the same. |
- // Don't use EXPECT_EQ here because we're comparing raw binary data and |
- // we really don't want it dumped to stdout on failure. |
- EXPECT_TRUE(dynamic_data == generated_data); |
-} |
- |
TEST(WireFormatTest, ParseMultipleExtensionRanges) { |
// Make sure we can parse a message that contains multiple extensions ranges. |
unittest::TestFieldOrderings source; |
@@ -767,197 +687,6 @@ TEST(WireFormatTest, RepeatedScalarsDifferentTagSizes) { |
EXPECT_EQ(msg1.DebugString(), msg2.DebugString()); |
} |
-TEST(WireFormatTest, CompatibleTypes) { |
- const int64 data = 0x100000000LL; |
- unittest::Int64Message msg1; |
- msg1.set_data(data); |
- string serialized; |
- msg1.SerializeToString(&serialized); |
- |
- // Test int64 is compatible with bool |
- unittest::BoolMessage msg2; |
- ASSERT_TRUE(msg2.ParseFromString(serialized)); |
- ASSERT_EQ(static_cast<bool>(data), msg2.data()); |
- |
- // Test int64 is compatible with uint64 |
- unittest::Uint64Message msg3; |
- ASSERT_TRUE(msg3.ParseFromString(serialized)); |
- ASSERT_EQ(static_cast<uint64>(data), msg3.data()); |
- |
- // Test int64 is compatible with int32 |
- unittest::Int32Message msg4; |
- ASSERT_TRUE(msg4.ParseFromString(serialized)); |
- ASSERT_EQ(static_cast<int32>(data), msg4.data()); |
- |
- // Test int64 is compatible with uint32 |
- unittest::Uint32Message msg5; |
- ASSERT_TRUE(msg5.ParseFromString(serialized)); |
- ASSERT_EQ(static_cast<uint32>(data), msg5.data()); |
-} |
- |
-class Proto3PrimitiveRepeatedWireFormatTest : public ::testing::Test { |
- protected: |
- Proto3PrimitiveRepeatedWireFormatTest() |
- : packedTestAllTypes_( |
- "\xFA\x01\x01\x01" |
- "\x82\x02\x01\x01" |
- "\x8A\x02\x01\x01" |
- "\x92\x02\x01\x01" |
- "\x9A\x02\x01\x02" |
- "\xA2\x02\x01\x02" |
- "\xAA\x02\x04\x01\x00\x00\x00" |
- "\xB2\x02\x08\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\xBA\x02\x04\x01\x00\x00\x00" |
- "\xC2\x02\x08\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\xCA\x02\x04\x00\x00\x80\x3f" |
- "\xD2\x02\x08\x00\x00\x00\x00\x00\x00\xf0\x3f" |
- "\xDA\x02\x01\x01" |
- "\x9A\x03\x01\x01", |
- 86), |
- packedTestUnpackedTypes_( |
- "\x0A\x01\x01" |
- "\x12\x01\x01" |
- "\x1A\x01\x01" |
- "\x22\x01\x01" |
- "\x2A\x01\x02" |
- "\x32\x01\x02" |
- "\x3A\x04\x01\x00\x00\x00" |
- "\x42\x08\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\x4A\x04\x01\x00\x00\x00" |
- "\x52\x08\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\x5A\x04\x00\x00\x80\x3f" |
- "\x62\x08\x00\x00\x00\x00\x00\x00\xf0\x3f" |
- "\x6A\x01\x01" |
- "\x72\x01\x01", |
- 72), |
- unpackedTestAllTypes_( |
- "\xF8\x01\x01" |
- "\x80\x02\x01" |
- "\x88\x02\x01" |
- "\x90\x02\x01" |
- "\x98\x02\x02" |
- "\xA0\x02\x02" |
- "\xAD\x02\x01\x00\x00\x00" |
- "\xB1\x02\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\xBD\x02\x01\x00\x00\x00" |
- "\xC1\x02\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\xCD\x02\x00\x00\x80\x3f" |
- "\xD1\x02\x00\x00\x00\x00\x00\x00\xf0\x3f" |
- "\xD8\x02\x01" |
- "\x98\x03\x01", |
- 72), |
- unpackedTestUnpackedTypes_( |
- "\x08\x01" |
- "\x10\x01" |
- "\x18\x01" |
- "\x20\x01" |
- "\x28\x02" |
- "\x30\x02" |
- "\x3D\x01\x00\x00\x00" |
- "\x41\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\x4D\x01\x00\x00\x00" |
- "\x51\x01\x00\x00\x00\x00\x00\x00\x00" |
- "\x5D\x00\x00\x80\x3f" |
- "\x61\x00\x00\x00\x00\x00\x00\xf0\x3f" |
- "\x68\x01" |
- "\x70\x01", |
- 58) {} |
- template <class Proto> |
- void SetProto3PrimitiveRepeatedFields(Proto* message) { |
- message->add_repeated_int32(1); |
- message->add_repeated_int64(1); |
- message->add_repeated_uint32(1); |
- message->add_repeated_uint64(1); |
- message->add_repeated_sint32(1); |
- message->add_repeated_sint64(1); |
- message->add_repeated_fixed32(1); |
- message->add_repeated_fixed64(1); |
- message->add_repeated_sfixed32(1); |
- message->add_repeated_sfixed64(1); |
- message->add_repeated_float(1.0); |
- message->add_repeated_double(1.0); |
- message->add_repeated_bool(true); |
- message->add_repeated_nested_enum( |
- proto3_arena_unittest::TestAllTypes_NestedEnum_FOO); |
- } |
- |
- template <class Proto> |
- void ExpectProto3PrimitiveRepeatedFieldsSet(const Proto& message) { |
- EXPECT_EQ(1, message.repeated_int32(0)); |
- EXPECT_EQ(1, message.repeated_int64(0)); |
- EXPECT_EQ(1, message.repeated_uint32(0)); |
- EXPECT_EQ(1, message.repeated_uint64(0)); |
- EXPECT_EQ(1, message.repeated_sint32(0)); |
- EXPECT_EQ(1, message.repeated_sint64(0)); |
- EXPECT_EQ(1, message.repeated_fixed32(0)); |
- EXPECT_EQ(1, message.repeated_fixed64(0)); |
- EXPECT_EQ(1, message.repeated_sfixed32(0)); |
- EXPECT_EQ(1, message.repeated_sfixed64(0)); |
- EXPECT_EQ(1.0, message.repeated_float(0)); |
- EXPECT_EQ(1.0, message.repeated_double(0)); |
- EXPECT_EQ(true, message.repeated_bool(0)); |
- EXPECT_EQ(proto3_arena_unittest::TestAllTypes_NestedEnum_FOO, |
- message.repeated_nested_enum(0)); |
- } |
- |
- template <class Proto> |
- void TestSerialization(Proto* message, const string& expected) { |
- SetProto3PrimitiveRepeatedFields(message); |
- |
- int size = message->ByteSize(); |
- |
- // Serialize using the generated code. |
- string generated_data; |
- { |
- io::StringOutputStream raw_output(&generated_data); |
- io::CodedOutputStream output(&raw_output); |
- message->SerializeWithCachedSizes(&output); |
- ASSERT_FALSE(output.HadError()); |
- } |
- EXPECT_TRUE(expected == generated_data); |
- |
- // Serialize using the dynamic code. |
- string dynamic_data; |
- { |
- io::StringOutputStream raw_output(&dynamic_data); |
- io::CodedOutputStream output(&raw_output); |
- WireFormat::SerializeWithCachedSizes(*message, size, &output); |
- ASSERT_FALSE(output.HadError()); |
- } |
- EXPECT_TRUE(expected == dynamic_data); |
- } |
- |
- template <class Proto> |
- void TestParsing(Proto* message, const string& compatible_data) { |
- message->Clear(); |
- message->ParseFromString(compatible_data); |
- ExpectProto3PrimitiveRepeatedFieldsSet(*message); |
- |
- message->Clear(); |
- io::CodedInputStream input( |
- reinterpret_cast<const uint8*>(compatible_data.data()), |
- compatible_data.size()); |
- WireFormat::ParseAndMergePartial(&input, message); |
- ExpectProto3PrimitiveRepeatedFieldsSet(*message); |
- } |
- |
- const string packedTestAllTypes_; |
- const string packedTestUnpackedTypes_; |
- const string unpackedTestAllTypes_; |
- const string unpackedTestUnpackedTypes_; |
-}; |
- |
-TEST_F(Proto3PrimitiveRepeatedWireFormatTest, Proto3PrimitiveRepeated) { |
- proto3_arena_unittest::TestAllTypes packed_message; |
- proto3_arena_unittest::TestUnpackedTypes unpacked_message; |
- TestSerialization(&packed_message, packedTestAllTypes_); |
- TestParsing(&packed_message, packedTestAllTypes_); |
- TestParsing(&packed_message, unpackedTestAllTypes_); |
- TestSerialization(&unpacked_message, unpackedTestUnpackedTypes_); |
- TestParsing(&unpacked_message, packedTestUnpackedTypes_); |
- TestParsing(&unpacked_message, unpackedTestUnpackedTypes_); |
-} |
- |
class WireFormatInvalidInputTest : public testing::Test { |
protected: |
// Make a serialized TestAllTypes in which the field optional_nested_message |
@@ -1119,20 +848,11 @@ bool ReadMessage(const string &wire_buffer, T *message) { |
return message->ParseFromArray(wire_buffer.data(), wire_buffer.size()); |
} |
-bool StartsWith(const string& s, const string& prefix) { |
+bool base::StartsWith(const string& s, const string& prefix) { |
return s.substr(0, prefix.length()) == prefix; |
} |
-class Utf8ValidationTest : public ::testing::Test { |
- protected: |
- Utf8ValidationTest() {} |
- virtual ~Utf8ValidationTest() {} |
- virtual void SetUp() { |
- } |
- |
-}; |
- |
-TEST_F(Utf8ValidationTest, WriteInvalidUTF8String) { |
+TEST(Utf8ValidationTest, WriteInvalidUTF8String) { |
string wire_buffer; |
protobuf_unittest::OneString input; |
vector<string> errors; |
@@ -1143,18 +863,17 @@ TEST_F(Utf8ValidationTest, WriteInvalidUTF8String) { |
} |
#ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED |
ASSERT_EQ(1, errors.size()); |
- EXPECT_TRUE(StartsWith(errors[0], |
- "String field 'protobuf_unittest.OneString.data' " |
- "contains invalid UTF-8 data when " |
- "serializing a protocol buffer. Use the " |
- "'bytes' type if you intend to send raw bytes.")); |
+ EXPECT_TRUE( |
+ base::StartsWith(errors[0], |
+ "String field contains invalid UTF-8 data when " |
+ "serializing a protocol buffer. Use the " |
+ "'bytes' type if you intend to send raw bytes.")); |
#else |
ASSERT_EQ(0, errors.size()); |
#endif // GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED |
} |
- |
-TEST_F(Utf8ValidationTest, ReadInvalidUTF8String) { |
+TEST(Utf8ValidationTest, ReadInvalidUTF8String) { |
string wire_buffer; |
protobuf_unittest::OneString input; |
WriteMessage(kInvalidUTF8String, &input, &wire_buffer); |
@@ -1167,19 +886,18 @@ TEST_F(Utf8ValidationTest, ReadInvalidUTF8String) { |
} |
#ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED |
ASSERT_EQ(1, errors.size()); |
- EXPECT_TRUE(StartsWith(errors[0], |
- "String field 'protobuf_unittest.OneString.data' " |
- "contains invalid UTF-8 data when " |
- "parsing a protocol buffer. Use the " |
- "'bytes' type if you intend to send raw bytes.")); |
+ EXPECT_TRUE( |
+ base::StartsWith(errors[0], |
+ "String field contains invalid UTF-8 data when " |
+ "parsing a protocol buffer. Use the " |
+ "'bytes' type if you intend to send raw bytes.")); |
#else |
ASSERT_EQ(0, errors.size()); |
#endif // GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED |
} |
- |
-TEST_F(Utf8ValidationTest, WriteValidUTF8String) { |
+TEST(Utf8ValidationTest, WriteValidUTF8String) { |
string wire_buffer; |
protobuf_unittest::OneString input; |
vector<string> errors; |
@@ -1191,7 +909,7 @@ TEST_F(Utf8ValidationTest, WriteValidUTF8String) { |
ASSERT_EQ(0, errors.size()); |
} |
-TEST_F(Utf8ValidationTest, ReadValidUTF8String) { |
+TEST(Utf8ValidationTest, ReadValidUTF8String) { |
string wire_buffer; |
protobuf_unittest::OneString input; |
WriteMessage(kValidUTF8String, &input, &wire_buffer); |
@@ -1207,7 +925,7 @@ TEST_F(Utf8ValidationTest, ReadValidUTF8String) { |
} |
// Bytes: anything can pass as bytes, use invalid UTF-8 string to test |
-TEST_F(Utf8ValidationTest, WriteArbitraryBytes) { |
+TEST(Utf8ValidationTest, WriteArbitraryBytes) { |
string wire_buffer; |
protobuf_unittest::OneBytes input; |
vector<string> errors; |
@@ -1219,7 +937,7 @@ TEST_F(Utf8ValidationTest, WriteArbitraryBytes) { |
ASSERT_EQ(0, errors.size()); |
} |
-TEST_F(Utf8ValidationTest, ReadArbitraryBytes) { |
+TEST(Utf8ValidationTest, ReadArbitraryBytes) { |
string wire_buffer; |
protobuf_unittest::OneBytes input; |
WriteMessage(kInvalidUTF8String, &input, &wire_buffer); |
@@ -1234,7 +952,7 @@ TEST_F(Utf8ValidationTest, ReadArbitraryBytes) { |
EXPECT_EQ(input.data(), output.data()); |
} |
-TEST_F(Utf8ValidationTest, ParseRepeatedString) { |
+TEST(Utf8ValidationTest, ParseRepeatedString) { |
protobuf_unittest::MoreBytes input; |
input.add_data(kValidUTF8String); |
input.add_data(kInvalidUTF8String); |
@@ -1256,30 +974,6 @@ TEST_F(Utf8ValidationTest, ParseRepeatedString) { |
EXPECT_EQ(wire_buffer, output.SerializeAsString()); |
} |
-// Test the old VerifyUTF8String() function, which may still be called by old |
-// generated code. |
-TEST_F(Utf8ValidationTest, OldVerifyUTF8String) { |
- string data(kInvalidUTF8String); |
- |
- vector<string> errors; |
- { |
- ScopedMemoryLog log; |
- WireFormat::VerifyUTF8String(data.data(), data.size(), |
- WireFormat::SERIALIZE); |
- errors = log.GetMessages(ERROR); |
- } |
-#ifdef GOOGLE_PROTOBUF_UTF8_VALIDATION_ENABLED |
- ASSERT_EQ(1, errors.size()); |
- EXPECT_TRUE(StartsWith(errors[0], |
- "String field contains invalid UTF-8 data when " |
- "serializing a protocol buffer. Use the " |
- "'bytes' type if you intend to send raw bytes.")); |
-#else |
- ASSERT_EQ(0, errors.size()); |
-#endif |
-} |
- |
- |
} // namespace |
} // namespace internal |
} // namespace protobuf |