|
@@ -286,14 +286,14 @@ void ConformanceTestSuite::RunValidInputTest(
|
|
|
|
|
|
switch (response.result_case()) {
|
|
|
case ConformanceResponse::RESULT_NOT_SET:
|
|
|
- ReportFailure(test_name, request, response,
|
|
|
+ ReportFailure(test_name, level, request, response,
|
|
|
"Response didn't have any field in the Response.");
|
|
|
return;
|
|
|
|
|
|
case ConformanceResponse::kParseError:
|
|
|
case ConformanceResponse::kRuntimeError:
|
|
|
case ConformanceResponse::kSerializeError:
|
|
|
- ReportFailure(test_name, request, response,
|
|
|
+ ReportFailure(test_name, level, request, response,
|
|
|
"Failed to parse input or produce output.");
|
|
|
return;
|
|
|
|
|
@@ -423,12 +423,12 @@ void ConformanceTestSuite::RunValidJsonTestWithProtobufInput(
|
|
|
}
|
|
|
|
|
|
void ConformanceTestSuite::RunValidProtobufTest(
|
|
|
- const string& test_name, const TestAllTypes& input,
|
|
|
+ const string& test_name, ConformanceLevel level, const TestAllTypes& input,
|
|
|
const string& equivalent_text_format) {
|
|
|
- RunValidInputTest("ProtobufInput." + test_name + ".ProtobufOutput",
|
|
|
+ RunValidInputTest("ProtobufInput." + test_name + ".ProtobufOutput", level,
|
|
|
input.SerializeAsString(), conformance::PROTOBUF,
|
|
|
equivalent_text_format, conformance::PROTOBUF);
|
|
|
- RunValidInputTest("ProtobufInput." + test_name + ".JsonOutput",
|
|
|
+ RunValidInputTest("ProtobufInput." + test_name + ".JsonOutput", level,
|
|
|
input.SerializeAsString(), conformance::PROTOBUF,
|
|
|
equivalent_text_format, conformance::JSON);
|
|
|
}
|
|
@@ -723,7 +723,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
FIELD_name12: 12
|
|
|
)");
|
|
|
RunValidJsonTest(
|
|
|
- "FieldNameWithDoubleUnderscores",
|
|
|
+ "FieldNameWithDoubleUnderscores", RECOMMENDED,
|
|
|
R"({
|
|
|
"fieldName13": 13,
|
|
|
"fieldName14": 14,
|
|
@@ -790,7 +790,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
"fieldname1: 1");
|
|
|
// String ends with escape character.
|
|
|
ExpectParseFailureForJson(
|
|
|
- "StringEndsWithEscapeChar",
|
|
|
+ "StringEndsWithEscapeChar", RECOMMENDED,
|
|
|
"{\"optionalString\": \"abc\\");
|
|
|
// Field names must be quoted (or it's not valid JSON).
|
|
|
ExpectParseFailureForJson(
|
|
@@ -801,13 +801,13 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
"TrailingCommaInAnObject", RECOMMENDED,
|
|
|
R"({"fieldname1":1,})");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "TrailingCommaInAnObjectWithSpace",
|
|
|
+ "TrailingCommaInAnObjectWithSpace", RECOMMENDED,
|
|
|
R"({"fieldname1":1 ,})");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "TrailingCommaInAnObjectWithSpaceCommaSpace",
|
|
|
+ "TrailingCommaInAnObjectWithSpaceCommaSpace", RECOMMENDED,
|
|
|
R"({"fieldname1":1 , })");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "TrailingCommaInAnObjectWithNewlines",
|
|
|
+ "TrailingCommaInAnObjectWithNewlines", RECOMMENDED,
|
|
|
R"({
|
|
|
"fieldname1":1,
|
|
|
})");
|
|
@@ -820,28 +820,28 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
})");
|
|
|
// JSON spec says whitespace doesn't matter, so try a few spacings to be sure.
|
|
|
RunValidJsonTest(
|
|
|
- "OneLineNoSpaces",
|
|
|
+ "OneLineNoSpaces", RECOMMENDED,
|
|
|
"{\"optionalInt32\":1,\"optionalInt64\":2}",
|
|
|
R"(
|
|
|
optional_int32: 1
|
|
|
optional_int64: 2
|
|
|
)");
|
|
|
RunValidJsonTest(
|
|
|
- "OneLineWithSpaces",
|
|
|
+ "OneLineWithSpaces", RECOMMENDED,
|
|
|
"{ \"optionalInt32\" : 1 , \"optionalInt64\" : 2 }",
|
|
|
R"(
|
|
|
optional_int32: 1
|
|
|
optional_int64: 2
|
|
|
)");
|
|
|
RunValidJsonTest(
|
|
|
- "MultilineNoSpaces",
|
|
|
+ "MultilineNoSpaces", RECOMMENDED,
|
|
|
"{\n\"optionalInt32\"\n:\n1\n,\n\"optionalInt64\"\n:\n2\n}",
|
|
|
R"(
|
|
|
optional_int32: 1
|
|
|
optional_int64: 2
|
|
|
)");
|
|
|
RunValidJsonTest(
|
|
|
- "MultilineWithSpaces",
|
|
|
+ "MultilineWithSpaces", RECOMMENDED,
|
|
|
"{\n \"optionalInt32\" : 1\n ,\n \"optionalInt64\" : 2\n}\n",
|
|
|
R"(
|
|
|
optional_int32: 1
|
|
@@ -849,10 +849,10 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
)");
|
|
|
// Missing comma between key/value pairs.
|
|
|
ExpectParseFailureForJson(
|
|
|
- "MissingCommaOneLine",
|
|
|
+ "MissingCommaOneLine", RECOMMENDED,
|
|
|
"{ \"optionalInt32\": 1 \"optionalInt64\": 2 }");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "MissingCommaMultiline",
|
|
|
+ "MissingCommaMultiline", RECOMMENDED,
|
|
|
"{\n \"optionalInt32\": 1\n \"optionalInt64\": 2\n}");
|
|
|
// Duplicated field names are not allowed.
|
|
|
ExpectParseFailureForJson(
|
|
@@ -919,7 +919,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
value.isMember("FIELDName12");
|
|
|
});
|
|
|
RunValidJsonTestWithValidator(
|
|
|
- "FieldNameWithDoubleUnderscores",
|
|
|
+ "FieldNameWithDoubleUnderscores", RECOMMENDED,
|
|
|
R"({
|
|
|
"fieldName13": 13,
|
|
|
"fieldName14": 14,
|
|
@@ -1375,58 +1375,58 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
TestAllTypes message;
|
|
|
message.set_oneof_uint32(0);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroUint32", message, "oneof_uint32: 0");
|
|
|
+ "OneofZeroUint32", RECOMMENDED, message, "oneof_uint32: 0");
|
|
|
message.mutable_oneof_nested_message()->set_a(0);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroMessage", message, "oneof_nested_message: {}");
|
|
|
+ "OneofZeroMessage", RECOMMENDED, message, "oneof_nested_message: {}");
|
|
|
message.set_oneof_string("");
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroString", message, "oneof_string: \"\"");
|
|
|
+ "OneofZeroString", RECOMMENDED, message, "oneof_string: \"\"");
|
|
|
message.set_oneof_bytes("");
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroBytes", message, "oneof_bytes: \"\"");
|
|
|
+ "OneofZeroBytes", RECOMMENDED, message, "oneof_bytes: \"\"");
|
|
|
message.set_oneof_bool(false);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroBool", message, "oneof_bool: false");
|
|
|
+ "OneofZeroBool", RECOMMENDED, message, "oneof_bool: false");
|
|
|
message.set_oneof_uint64(0);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroUint64", message, "oneof_uint64: 0");
|
|
|
+ "OneofZeroUint64", RECOMMENDED, message, "oneof_uint64: 0");
|
|
|
message.set_oneof_float(0.0f);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroFloat", message, "oneof_float: 0");
|
|
|
+ "OneofZeroFloat", RECOMMENDED, message, "oneof_float: 0");
|
|
|
message.set_oneof_double(0.0);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroDouble", message, "oneof_double: 0");
|
|
|
+ "OneofZeroDouble", RECOMMENDED, message, "oneof_double: 0");
|
|
|
message.set_oneof_enum(TestAllTypes::FOO);
|
|
|
RunValidProtobufTest(
|
|
|
- "OneofZeroEnum", message, "oneof_enum: FOO");
|
|
|
+ "OneofZeroEnum", RECOMMENDED, message, "oneof_enum: FOO");
|
|
|
}
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroUint32",
|
|
|
+ "OneofZeroUint32", RECOMMENDED,
|
|
|
R"({"oneofUint32": 0})", "oneof_uint32: 0");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroMessage",
|
|
|
+ "OneofZeroMessage", RECOMMENDED,
|
|
|
R"({"oneofNestedMessage": {}})", "oneof_nested_message: {}");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroString",
|
|
|
+ "OneofZeroString", RECOMMENDED,
|
|
|
R"({"oneofString": ""})", "oneof_string: \"\"");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroBytes",
|
|
|
+ "OneofZeroBytes", RECOMMENDED,
|
|
|
R"({"oneofBytes": ""})", "oneof_bytes: \"\"");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroBool",
|
|
|
+ "OneofZeroBool", RECOMMENDED,
|
|
|
R"({"oneofBool": false})", "oneof_bool: false");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroUint64",
|
|
|
+ "OneofZeroUint64", RECOMMENDED,
|
|
|
R"({"oneofUint64": 0})", "oneof_uint64: 0");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroFloat",
|
|
|
+ "OneofZeroFloat", RECOMMENDED,
|
|
|
R"({"oneofFloat": 0.0})", "oneof_float: 0");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroDouble",
|
|
|
+ "OneofZeroDouble", RECOMMENDED,
|
|
|
R"({"oneofDouble": 0.0})", "oneof_double: 0");
|
|
|
RunValidJsonTest(
|
|
|
- "OneofZeroEnum",
|
|
|
+ "OneofZeroEnum", RECOMMENDED,
|
|
|
R"({"oneofEnum":"FOO"})", "oneof_enum: FOO");
|
|
|
|
|
|
// Repeated fields.
|
|
@@ -1485,13 +1485,13 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
"RepeatedFieldTrailingComma", RECOMMENDED,
|
|
|
R"({"repeatedInt32": [1, 2, 3, 4,]})");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "RepeatedFieldTrailingCommaWithSpace",
|
|
|
+ "RepeatedFieldTrailingCommaWithSpace", RECOMMENDED,
|
|
|
"{\"repeatedInt32\": [1, 2, 3, 4 ,]}");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "RepeatedFieldTrailingCommaWithSpaceCommaSpace",
|
|
|
+ "RepeatedFieldTrailingCommaWithSpaceCommaSpace", RECOMMENDED,
|
|
|
"{\"repeatedInt32\": [1, 2, 3, 4 , ]}");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "RepeatedFieldTrailingCommaWithNewlines",
|
|
|
+ "RepeatedFieldTrailingCommaWithNewlines", RECOMMENDED,
|
|
|
"{\"repeatedInt32\": [\n 1,\n 2,\n 3,\n 4,\n]}");
|
|
|
|
|
|
// Map fields.
|
|
@@ -1614,13 +1614,13 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
|
|
|
// http://www.rfc-editor.org/rfc/rfc7159.txt says strings have to use double
|
|
|
// quotes.
|
|
|
ExpectParseFailureForJson(
|
|
|
- "StringFieldSingleQuoteKey",
|
|
|
+ "StringFieldSingleQuoteKey", RECOMMENDED,
|
|
|
R"({'optionalString': "Hello world!"})");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "StringFieldSingleQuoteValue",
|
|
|
+ "StringFieldSingleQuoteValue", RECOMMENDED,
|
|
|
R"({"optionalString": 'Hello world!'})");
|
|
|
ExpectParseFailureForJson(
|
|
|
- "StringFieldSingleQuoteBoth",
|
|
|
+ "StringFieldSingleQuoteBoth", RECOMMENDED,
|
|
|
R"({'optionalString': 'Hello world!'})");
|
|
|
|
|
|
// Wrapper types.
|