|
@@ -100,6 +100,7 @@ class ProtostreamObjectSourceTest
|
|
|
ow_(&mock_),
|
|
|
use_lower_camel_for_enums_(false),
|
|
|
use_ints_for_enums_(false),
|
|
|
+ use_preserve_proto_field_names_(false),
|
|
|
add_trailing_zeros_(false),
|
|
|
render_unknown_enum_values_(true) {
|
|
|
helper_.ResetTypeInfo(Book::descriptor(), Proto3Message::descriptor());
|
|
@@ -123,6 +124,7 @@ class ProtostreamObjectSourceTest
|
|
|
helper_.NewProtoSource(&in_stream, GetTypeUrl(descriptor)));
|
|
|
if (use_lower_camel_for_enums_) os->set_use_lower_camel_for_enums(true);
|
|
|
if (use_ints_for_enums_) os->set_use_ints_for_enums(true);
|
|
|
+ if (use_preserve_proto_field_names_) os->set_preserve_proto_field_names(true);
|
|
|
os->set_max_recursion_depth(64);
|
|
|
return os->WriteTo(&mock_);
|
|
|
}
|
|
@@ -272,6 +274,8 @@ class ProtostreamObjectSourceTest
|
|
|
|
|
|
void UseIntsForEnums() { use_ints_for_enums_ = true; }
|
|
|
|
|
|
+ void UsePreserveProtoFieldNames() { use_preserve_proto_field_names_ = true; }
|
|
|
+
|
|
|
void AddTrailingZeros() { add_trailing_zeros_ = true; }
|
|
|
|
|
|
void SetRenderUnknownEnumValues(bool value) {
|
|
@@ -284,6 +288,7 @@ class ProtostreamObjectSourceTest
|
|
|
ExpectingObjectWriter ow_;
|
|
|
bool use_lower_camel_for_enums_;
|
|
|
bool use_ints_for_enums_;
|
|
|
+ bool use_preserve_proto_field_names_;
|
|
|
bool add_trailing_zeros_;
|
|
|
bool render_unknown_enum_values_;
|
|
|
};
|
|
@@ -536,6 +541,16 @@ TEST_P(ProtostreamObjectSourceTest, UseIntsForEnumsTest) {
|
|
|
DoTest(book, Book::descriptor());
|
|
|
}
|
|
|
|
|
|
+TEST_P(ProtostreamObjectSourceTest, UsePreserveProtoFieldNames) {
|
|
|
+ Book book;
|
|
|
+ book.set_snake_field("foo");
|
|
|
+
|
|
|
+ UsePreserveProtoFieldNames();
|
|
|
+
|
|
|
+ ow_.StartObject("")->RenderString("snake_field", "foo")->EndObject();
|
|
|
+ DoTest(book, Book::descriptor());
|
|
|
+}
|
|
|
+
|
|
|
TEST_P(ProtostreamObjectSourceTest,
|
|
|
UnknownEnumAreDroppedWhenRenderUnknownEnumValuesIsUnset) {
|
|
|
Proto3Message message;
|
|
@@ -769,6 +784,69 @@ TEST_P(ProtostreamObjectSourceAnysTest, BasicAny) {
|
|
|
DoTest(out, AnyOut::descriptor());
|
|
|
}
|
|
|
|
|
|
+TEST_P(ProtostreamObjectSourceAnysTest, LowerCamelEnumOutputSnakeCase) {
|
|
|
+ AnyOut out;
|
|
|
+ ::google::protobuf::Any* any = out.mutable_any();
|
|
|
+
|
|
|
+ Book book;
|
|
|
+ book.set_type(Book::arts_and_photography);
|
|
|
+ any->PackFrom(book);
|
|
|
+
|
|
|
+ UseLowerCamelForEnums();
|
|
|
+
|
|
|
+ ow_.StartObject("")
|
|
|
+ ->StartObject("any")
|
|
|
+ ->RenderString("@type",
|
|
|
+ "type.googleapis.com/google.protobuf.testing.Book")
|
|
|
+ ->RenderString("type", "artsAndPhotography")
|
|
|
+ ->EndObject()
|
|
|
+ ->EndObject();
|
|
|
+
|
|
|
+ DoTest(out, AnyOut::descriptor());
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(ProtostreamObjectSourceAnysTest, UseIntsForEnumsTest) {
|
|
|
+ AnyOut out;
|
|
|
+ ::google::protobuf::Any* any = out.mutable_any();
|
|
|
+
|
|
|
+ Book book;
|
|
|
+ book.set_type(Book::ACTION_AND_ADVENTURE);
|
|
|
+ any->PackFrom(book);
|
|
|
+
|
|
|
+ UseIntsForEnums();
|
|
|
+
|
|
|
+ ow_.StartObject("")
|
|
|
+ ->StartObject("any")
|
|
|
+ ->RenderString("@type",
|
|
|
+ "type.googleapis.com/google.protobuf.testing.Book")
|
|
|
+ ->RenderInt32("type", 3)
|
|
|
+ ->EndObject()
|
|
|
+ ->EndObject();
|
|
|
+
|
|
|
+ DoTest(out, AnyOut::descriptor());
|
|
|
+}
|
|
|
+
|
|
|
+TEST_P(ProtostreamObjectSourceAnysTest, UsePreserveProtoFieldNames) {
|
|
|
+ AnyOut out;
|
|
|
+ ::google::protobuf::Any* any = out.mutable_any();
|
|
|
+
|
|
|
+ Book book;
|
|
|
+ book.set_snake_field("foo");
|
|
|
+ any->PackFrom(book);
|
|
|
+
|
|
|
+ UsePreserveProtoFieldNames();
|
|
|
+
|
|
|
+ ow_.StartObject("")
|
|
|
+ ->StartObject("any")
|
|
|
+ ->RenderString("@type",
|
|
|
+ "type.googleapis.com/google.protobuf.testing.Book")
|
|
|
+ ->RenderString("snake_field", "foo")
|
|
|
+ ->EndObject()
|
|
|
+ ->EndObject();
|
|
|
+
|
|
|
+ DoTest(out, AnyOut::descriptor());
|
|
|
+}
|
|
|
+
|
|
|
TEST_P(ProtostreamObjectSourceAnysTest, RecursiveAny) {
|
|
|
AnyOut out;
|
|
|
::google::protobuf::Any* any = out.mutable_any();
|