Commit d59592af authored by Jie Luo's avatar Jie Luo

DefaultValueObjectWriter should populate oneof message field

parent ae220cda
...@@ -363,8 +363,9 @@ void DefaultValueObjectWriter::Node::PopulateChildren( ...@@ -363,8 +363,9 @@ void DefaultValueObjectWriter::Node::PopulateChildren(
} }
// If oneof_index() != 0, the child field is part of a "oneof", which means // If oneof_index() != 0, the child field is part of a "oneof", which means
// the child field is optional and we shouldn't populate its default value. // the child field is optional and we shouldn't populate its default
if (field.oneof_index() != 0) continue; // primitive value.
if (field.oneof_index() != 0 && kind == PRIMITIVE) continue;
// If the child field is of primitive type, sets its data to the default // If the child field is of primitive type, sets its data to the default
// value of its type. // value of its type.
......
...@@ -51,6 +51,7 @@ using proto3::FOO; ...@@ -51,6 +51,7 @@ using proto3::FOO;
using proto3::BAR; using proto3::BAR;
using proto3::TestMessage; using proto3::TestMessage;
using proto3::TestMap; using proto3::TestMap;
using proto3::TestOneof;
using testing::MapIn; using testing::MapIn;
static const char kTypeUrlPrefix[] = "type.googleapis.com"; static const char kTypeUrlPrefix[] = "type.googleapis.com";
...@@ -232,6 +233,21 @@ TEST_F(JsonUtilTest, ParsePrimitiveMapIn) { ...@@ -232,6 +233,21 @@ TEST_F(JsonUtilTest, ParsePrimitiveMapIn) {
EXPECT_EQ(message.DebugString(), other.DebugString()); EXPECT_EQ(message.DebugString(), other.DebugString());
} }
TEST_F(JsonUtilTest, PrintPrimitiveOneof) {
TestOneof message;
JsonPrintOptions options;
options.always_print_primitive_fields = true;
message.mutable_oneof_message_value();
EXPECT_EQ(
"{\"oneofMessageValue\":{\"value\":0}}",
ToJson(message, options));
message.set_oneof_int32_value(1);
EXPECT_EQ(
"{\"oneofInt32Value\":1}",
ToJson(message, options));
}
TEST_F(JsonUtilTest, TestParseIgnoreUnknownFields) { TEST_F(JsonUtilTest, TestParseIgnoreUnknownFields) {
TestMessage m; TestMessage m;
JsonParseOptions options; JsonParseOptions options;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment