diff options
author | Thomas Van Lenten <thomasvl@google.com> | 2016-08-16 09:02:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-16 09:02:27 -0400 |
commit | e3891655868a465ad0d17ddc2b1ea95dd0a39adf (patch) | |
tree | 97558337dfe98edc20311842db2d6f080eaae576 /conformance | |
parent | 4763e64eb1e72e628ab75a9872f4146fdd2cf765 (diff) | |
download | protobuf-e3891655868a465ad0d17ddc2b1ea95dd0a39adf.tar.gz protobuf-e3891655868a465ad0d17ddc2b1ea95dd0a39adf.tar.bz2 protobuf-e3891655868a465ad0d17ddc2b1ea95dd0a39adf.zip |
Add more JSON tests around underscores (#1963)
Add more JSON tests around underscores
Diffstat (limited to 'conformance')
-rw-r--r-- | conformance/conformance.proto | 7 | ||||
-rw-r--r-- | conformance/conformance_test.cc | 38 | ||||
-rw-r--r-- | conformance/failure_list_java.txt | 3 | ||||
-rw-r--r-- | conformance/failure_list_ruby.txt | 3 |
4 files changed, 49 insertions, 2 deletions
diff --git a/conformance/conformance.proto b/conformance/conformance.proto index e1b797ca..95a8fd13 100644 --- a/conformance/conformance.proto +++ b/conformance/conformance.proto @@ -253,6 +253,7 @@ message TestAllTypes { repeated google.protobuf.Value repeated_value = 316; // Test field-name-to-JSON-name convention. + // (protobuf says names can be any valid C/C++ identifier.) int32 fieldname1 = 401; int32 field_name2 = 402; int32 _field_name3 = 403; @@ -265,6 +266,12 @@ message TestAllTypes { int32 Field_Name10 = 410; int32 FIELD_NAME11 = 411; 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 { diff --git a/conformance/conformance_test.cc b/conformance/conformance_test.cc index 88b05a56..8c247b55 100644 --- a/conformance/conformance_test.cc +++ b/conformance/conformance_test.cc @@ -660,12 +660,14 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, R"({ "fieldname1": 1, "fieldName2": 2, - "FieldName3": 3 + "FieldName3": 3, + "FieldName4": 4 })", R"( fieldname1: 1 field_name2: 2 _field_name3: 3 + field__name4_: 4 )"); RunValidJsonTest( "FieldNameWithNumbers", @@ -695,6 +697,24 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, FIELD_NAME11: 11 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. RunValidJsonTest( "OriginalProtoFieldName", @@ -702,6 +722,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, "fieldname1": 1, "field_name2": 2, "_field_name3": 3, + "field__name4_": 4, "field0name5": 5, "field_0_name6": 6, "fieldName7": 7, @@ -709,12 +730,19 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, "field_Name9": 9, "Field_Name10": 10, "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"( fieldname1: 1 field_name2: 2 _field_name3: 3 + field__name4_: 4 field0name5: 5 field_0_name6: 6 fieldName7: 7 @@ -723,6 +751,12 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, Field_Name10: 10 FIELD_NAME11: 11 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. RunValidJsonTest( diff --git a/conformance/failure_list_java.txt b/conformance/failure_list_java.txt index 850712bd..a8636878 100644 --- a/conformance/failure_list_java.txt +++ b/conformance/failure_list_java.txt @@ -21,7 +21,10 @@ JsonInput.EnumFieldNotQuoted JsonInput.FieldMaskInvalidCharacter JsonInput.FieldNameDuplicate JsonInput.FieldNameInSnakeCase.JsonOutput +JsonInput.FieldNameInSnakeCase.ProtobufOutput JsonInput.FieldNameNotQuoted +JsonInput.FieldNameWithDoubleUnderscores.JsonOutput +JsonInput.FieldNameWithDoubleUnderscores.ProtobufOutput JsonInput.FloatFieldInfinityNotQuoted JsonInput.FloatFieldNanNotQuoted JsonInput.FloatFieldNegativeInfinityNotQuoted diff --git a/conformance/failure_list_ruby.txt b/conformance/failure_list_ruby.txt index 47d0c737..2960f03b 100644 --- a/conformance/failure_list_ruby.txt +++ b/conformance/failure_list_ruby.txt @@ -59,6 +59,9 @@ JsonInput.EnumFieldUnknownValue.Validator JsonInput.FieldMask.JsonOutput JsonInput.FieldMask.ProtobufOutput JsonInput.FieldNameInSnakeCase.JsonOutput +JsonInput.FieldNameInSnakeCase.ProtobufOutput +JsonInput.FieldNameWithDoubleUnderscores.JsonOutput +JsonInput.FieldNameWithDoubleUnderscores.ProtobufOutput JsonInput.FieldNameWithMixedCases.JsonOutput JsonInput.FieldNameWithMixedCases.ProtobufOutput JsonInput.FieldNameWithMixedCases.Validator |