diff options
Diffstat (limited to 'libs/protoutil/tests/ProtoOutputStream_test.cpp')
-rw-r--r-- | libs/protoutil/tests/ProtoOutputStream_test.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/libs/protoutil/tests/ProtoOutputStream_test.cpp b/libs/protoutil/tests/ProtoOutputStream_test.cpp index e8e155779829..5c25787e8555 100644 --- a/libs/protoutil/tests/ProtoOutputStream_test.cpp +++ b/libs/protoutil/tests/ProtoOutputStream_test.cpp @@ -132,17 +132,31 @@ TEST(ProtoOutputStreamTest, Reusability) { EXPECT_TRUE(proto.write(FIELD_TYPE_INT32 | ComplexProto::kIntsFieldNumber, 15)); EXPECT_EQ(proto.bytesWritten(), 4); EXPECT_EQ(proto.size(), 4); + // Can't write to proto after compact + EXPECT_FALSE(proto.write(FIELD_TYPE_INT32 | ComplexProto::kIntsFieldNumber, 94)); + + ComplexProto beforeClear; + ASSERT_TRUE(beforeClear.ParseFromString(flushToString(&proto))); + EXPECT_EQ(beforeClear.ints_size(), 2); + EXPECT_EQ(beforeClear.ints(0), 32); + EXPECT_EQ(beforeClear.ints(1), 15); + proto.clear(); EXPECT_EQ(proto.bytesWritten(), 0); - EXPECT_EQ(proto.size(), 0); + EXPECT_TRUE(proto.write(FIELD_TYPE_INT32 | ComplexProto::kIntsFieldNumber, 1076)); + + ComplexProto afterClear; + ASSERT_TRUE(afterClear.ParseFromString(flushToString(&proto))); + EXPECT_EQ(afterClear.ints_size(), 1); + EXPECT_EQ(afterClear.ints(0), 1076); } TEST(ProtoOutputStreamTest, AdvancedEncoding) { ProtoOutputStream proto; - proto.writeRawVarint(ComplexProto::kIntsFieldNumber << FIELD_ID_SHIFT); + proto.writeRawVarint((ComplexProto::kIntsFieldNumber << FIELD_ID_SHIFT) + WIRE_TYPE_VARINT); proto.writeRawVarint(UINT64_C(-123809234)); proto.writeLengthDelimitedHeader(ComplexProto::kLogsFieldNumber, 8); - proto.writeRawByte((ComplexProto::Log::kDataFieldNumber << FIELD_ID_SHIFT) + 2); + proto.writeRawByte((ComplexProto::Log::kDataFieldNumber << FIELD_ID_SHIFT) + WIRE_TYPE_LENGTH_DELIMITED); proto.writeRawByte(6); proto.writeRawByte('b'); proto.writeRawByte('a'); @@ -168,3 +182,11 @@ TEST(ProtoOutputStreamTest, AdvancedEncoding) { EXPECT_FALSE(log2.has_name()); EXPECT_FALSE(log2.has_data()); } + +TEST(ProtoOutputStreamTest, InvalidTypes) { + ProtoOutputStream proto; + EXPECT_FALSE(proto.write(FIELD_TYPE_UNKNOWN | PrimitiveProto::kValInt32FieldNumber, 790)); + EXPECT_FALSE(proto.write(FIELD_TYPE_ENUM | PrimitiveProto::kValEnumFieldNumber, 234.34)); + EXPECT_FALSE(proto.write(FIELD_TYPE_BOOL | PrimitiveProto::kValBoolFieldNumber, 18.73f)); + EXPECT_EQ(proto.size(), 0); +}
\ No newline at end of file |