From e841bac4fcf47f809e089a70d5f84ac37b3883df Mon Sep 17 00:00:00 2001 From: Feng Xiao Date: Fri, 11 Dec 2015 17:09:20 -0800 Subject: Down-integrate from internal code base. --- conformance/conformance_test.h | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'conformance/conformance_test.h') diff --git a/conformance/conformance_test.h b/conformance/conformance_test.h index 9e6cdaee..b89d3700 100644 --- a/conformance/conformance_test.h +++ b/conformance/conformance_test.h @@ -38,14 +38,19 @@ #ifndef CONFORMANCE_CONFORMANCE_TEST_H #define CONFORMANCE_CONFORMANCE_TEST_H +#include #include #include #include #include +#include "third_party/jsoncpp/value.h" +#include "third_party/jsoncpp/reader.h" + namespace conformance { class ConformanceRequest; class ConformanceResponse; +class TestAllTypes; } // namespace conformance namespace google { @@ -53,6 +58,8 @@ namespace protobuf { class ConformanceTestRunner { public: + virtual ~ConformanceTestRunner() {} + // Call to run a single conformance test. // // "input" is a serialized conformance.ConformanceRequest. @@ -60,7 +67,9 @@ class ConformanceTestRunner { // // If there is any error in running the test itself, set "runtime_error" in // the response. - virtual void RunTest(const std::string& input, std::string* output) = 0; + virtual void RunTest(const std::string& test_name, + const std::string& input, + std::string* output) = 0; }; // Class representing the test suite itself. To run it, implement your own @@ -118,6 +127,18 @@ class ConformanceTestSuite { conformance::WireFormat requested_output); void RunValidJsonTest(const string& test_name, const string& input_json, const string& equivalent_text_format); + void RunValidJsonTestWithProtobufInput(const string& test_name, + const conformance::TestAllTypes& input, + const string& equivalent_text_format); + + typedef std::function Validator; + void RunValidJsonTestWithValidator(const string& test_name, + const string& input_json, + const Validator& validator); + void ExpectParseFailureForJson(const string& test_name, + const string& input_json); + void ExpectSerializeFailureForJson(const string& test_name, + const string& text_format); void ExpectParseFailureForProto(const std::string& proto, const std::string& test_name); void ExpectHardParseFailureForProto(const std::string& proto, -- cgit v1.2.3