Commit e3891655 authored by Thomas Van Lenten's avatar Thomas Van Lenten Committed by GitHub

Add more JSON tests around underscores (#1963)

Add more JSON tests around underscores
parent 4763e64e
...@@ -253,6 +253,7 @@ message TestAllTypes { ...@@ -253,6 +253,7 @@ message TestAllTypes {
repeated google.protobuf.Value repeated_value = 316; repeated google.protobuf.Value repeated_value = 316;
// Test field-name-to-JSON-name convention. // Test field-name-to-JSON-name convention.
// (protobuf says names can be any valid C/C++ identifier.)
int32 fieldname1 = 401; int32 fieldname1 = 401;
int32 field_name2 = 402; int32 field_name2 = 402;
int32 _field_name3 = 403; int32 _field_name3 = 403;
...@@ -265,6 +266,12 @@ message TestAllTypes { ...@@ -265,6 +266,12 @@ message TestAllTypes {
int32 Field_Name10 = 410; int32 Field_Name10 = 410;
int32 FIELD_NAME11 = 411; int32 FIELD_NAME11 = 411;
int32 FIELD_name12 = 412; int32 FIELD_name12 = 412;
int32 __field_name13 = 413;
int32 __Field_name14 = 414;
int32 field__name15 = 415;
int32 field__Name16 = 416;
int32 field_name17__ = 417;
int32 Field_name18__ = 418;
} }
message ForeignMessage { message ForeignMessage {
......
...@@ -660,12 +660,14 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, ...@@ -660,12 +660,14 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
R"({ R"({
"fieldname1": 1, "fieldname1": 1,
"fieldName2": 2, "fieldName2": 2,
"FieldName3": 3 "FieldName3": 3,
"FieldName4": 4
})", })",
R"( R"(
fieldname1: 1 fieldname1: 1
field_name2: 2 field_name2: 2
_field_name3: 3 _field_name3: 3
field__name4_: 4
)"); )");
RunValidJsonTest( RunValidJsonTest(
"FieldNameWithNumbers", "FieldNameWithNumbers",
...@@ -695,6 +697,24 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, ...@@ -695,6 +697,24 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
FIELD_NAME11: 11 FIELD_NAME11: 11
FIELD_name12: 12 FIELD_name12: 12
)"); )");
RunValidJsonTest(
"FieldNameWithDoubleUnderscores",
R"({
"fieldName13": 13,
"fieldName14": 14,
"fieldName15": 15,
"fieldName16": 16,
"fieldName17": 17,
"fieldName18": 18
})",
R"(
__field_name13: 13
__Field_name14: 14
field__name15: 15
field__Name16: 16
field_name17__: 17
Field_name18__: 18
)");
// Using the original proto field name in JSON is also allowed. // Using the original proto field name in JSON is also allowed.
RunValidJsonTest( RunValidJsonTest(
"OriginalProtoFieldName", "OriginalProtoFieldName",
...@@ -702,6 +722,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, ...@@ -702,6 +722,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
"fieldname1": 1, "fieldname1": 1,
"field_name2": 2, "field_name2": 2,
"_field_name3": 3, "_field_name3": 3,
"field__name4_": 4,
"field0name5": 5, "field0name5": 5,
"field_0_name6": 6, "field_0_name6": 6,
"fieldName7": 7, "fieldName7": 7,
...@@ -709,12 +730,19 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, ...@@ -709,12 +730,19 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
"field_Name9": 9, "field_Name9": 9,
"Field_Name10": 10, "Field_Name10": 10,
"FIELD_NAME11": 11, "FIELD_NAME11": 11,
"FIELD_name12": 12 "FIELD_name12": 12,
"__field_name13": 13,
"__Field_name14": 14,
"field__name15": 15,
"field__Name16": 16,
"field_name17__": 17,
"Field_name18__": 18
})", })",
R"( R"(
fieldname1: 1 fieldname1: 1
field_name2: 2 field_name2: 2
_field_name3: 3 _field_name3: 3
field__name4_: 4
field0name5: 5 field0name5: 5
field_0_name6: 6 field_0_name6: 6
fieldName7: 7 fieldName7: 7
...@@ -723,6 +751,12 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, ...@@ -723,6 +751,12 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
Field_Name10: 10 Field_Name10: 10
FIELD_NAME11: 11 FIELD_NAME11: 11
FIELD_name12: 12 FIELD_name12: 12
__field_name13: 13
__Field_name14: 14
field__name15: 15
field__Name16: 16
field_name17__: 17
Field_name18__: 18
)"); )");
// Field names can be escaped. // Field names can be escaped.
RunValidJsonTest( RunValidJsonTest(
......
...@@ -21,7 +21,10 @@ JsonInput.EnumFieldNotQuoted ...@@ -21,7 +21,10 @@ JsonInput.EnumFieldNotQuoted
JsonInput.FieldMaskInvalidCharacter JsonInput.FieldMaskInvalidCharacter
JsonInput.FieldNameDuplicate JsonInput.FieldNameDuplicate
JsonInput.FieldNameInSnakeCase.JsonOutput JsonInput.FieldNameInSnakeCase.JsonOutput
JsonInput.FieldNameInSnakeCase.ProtobufOutput
JsonInput.FieldNameNotQuoted JsonInput.FieldNameNotQuoted
JsonInput.FieldNameWithDoubleUnderscores.JsonOutput
JsonInput.FieldNameWithDoubleUnderscores.ProtobufOutput
JsonInput.FloatFieldInfinityNotQuoted JsonInput.FloatFieldInfinityNotQuoted
JsonInput.FloatFieldNanNotQuoted JsonInput.FloatFieldNanNotQuoted
JsonInput.FloatFieldNegativeInfinityNotQuoted JsonInput.FloatFieldNegativeInfinityNotQuoted
......
...@@ -59,6 +59,9 @@ JsonInput.EnumFieldUnknownValue.Validator ...@@ -59,6 +59,9 @@ JsonInput.EnumFieldUnknownValue.Validator
JsonInput.FieldMask.JsonOutput JsonInput.FieldMask.JsonOutput
JsonInput.FieldMask.ProtobufOutput JsonInput.FieldMask.ProtobufOutput
JsonInput.FieldNameInSnakeCase.JsonOutput JsonInput.FieldNameInSnakeCase.JsonOutput
JsonInput.FieldNameInSnakeCase.ProtobufOutput
JsonInput.FieldNameWithDoubleUnderscores.JsonOutput
JsonInput.FieldNameWithDoubleUnderscores.ProtobufOutput
JsonInput.FieldNameWithMixedCases.JsonOutput JsonInput.FieldNameWithMixedCases.JsonOutput
JsonInput.FieldNameWithMixedCases.ProtobufOutput JsonInput.FieldNameWithMixedCases.ProtobufOutput
JsonInput.FieldNameWithMixedCases.Validator JsonInput.FieldNameWithMixedCases.Validator
......
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