| Index: third_party/protobuf/src/google/protobuf/util/internal/json_stream_parser_test.cc
|
| diff --git a/third_party/protobuf/src/google/protobuf/util/internal/json_stream_parser_test.cc b/third_party/protobuf/src/google/protobuf/util/internal/json_stream_parser_test.cc
|
| index ca71ff2419ff5bf8ab7546094448685917a756c6..059ea6d86af099f9237e53d1e80af7b118f5ef84 100644
|
| --- a/third_party/protobuf/src/google/protobuf/util/internal/json_stream_parser_test.cc
|
| +++ b/third_party/protobuf/src/google/protobuf/util/internal/json_stream_parser_test.cc
|
| @@ -81,16 +81,12 @@ using util::Status;
|
| // For each test we split the input string on every possible character to ensure
|
| // the parser is able to handle arbitrarily split input for all cases. We also
|
| // do a final test of the entire test case one character at a time.
|
| -//
|
| -// It is verified that expected calls to the mocked objects are in sequence.
|
| class JsonStreamParserTest : public ::testing::Test {
|
| protected:
|
| JsonStreamParserTest() : mock_(), ow_(&mock_) {}
|
| virtual ~JsonStreamParserTest() {}
|
|
|
| - util::Status RunTest(StringPiece json, int split, bool coerce_utf8 = false,
|
| - bool allow_empty_null = false,
|
| - bool loose_float_number_conversion = false) {
|
| + util::Status RunTest(StringPiece json, int split, bool coerce_utf8 = false) {
|
| JsonStreamParser parser(&mock_);
|
|
|
| // Special case for split == length, test parsing one character at a time.
|
| @@ -120,11 +116,8 @@ class JsonStreamParserTest : public ::testing::Test {
|
| return result;
|
| }
|
|
|
| - void DoTest(StringPiece json, int split, bool coerce_utf8 = false,
|
| - bool allow_empty_null = false,
|
| - bool loose_float_number_conversion = false) {
|
| - util::Status result = RunTest(json, split, coerce_utf8, allow_empty_null,
|
| - loose_float_number_conversion);
|
| + void DoTest(StringPiece json, int split, bool coerce_utf8 = false) {
|
| + util::Status result = RunTest(json, split, coerce_utf8);
|
| if (!result.ok()) {
|
| GOOGLE_LOG(WARNING) << result;
|
| }
|
| @@ -132,21 +125,14 @@ class JsonStreamParserTest : public ::testing::Test {
|
| }
|
|
|
| void DoErrorTest(StringPiece json, int split, StringPiece error_prefix,
|
| - bool coerce_utf8 = false, bool allow_empty_null = false) {
|
| - util::Status result =
|
| - RunTest(json, split, coerce_utf8, allow_empty_null);
|
| + bool coerce_utf8 = false) {
|
| + util::Status result = RunTest(json, split, coerce_utf8);
|
| EXPECT_EQ(util::error::INVALID_ARGUMENT, result.error_code());
|
| StringPiece error_message(result.error_message());
|
| EXPECT_EQ(error_prefix, error_message.substr(0, error_prefix.size()));
|
| }
|
|
|
|
|
| -#ifndef _MSC_VER
|
| - // TODO(xiaofeng): We have to disable InSequence check for MSVC because it
|
| - // causes stack overflow due to its use of a linked list that is desctructed
|
| - // recursively.
|
| - ::testing::InSequence in_sequence_;
|
| -#endif // !_MSC_VER
|
| MockObjectWriter mock_;
|
| ExpectingObjectWriter ow_;
|
| };
|
| @@ -322,27 +308,18 @@ TEST_F(JsonStreamParserTest, ObjectKeyTypes) {
|
| }
|
| }
|
|
|
| -// - array containing primitive values (true, false, null, num, string)
|
| -TEST_F(JsonStreamParserTest, ArrayPrimitiveValues) {
|
| - StringPiece str = "[true, false, null, 'one', \"two\"]";
|
| +// - array containing array, object, values (true, false, null, num, string)
|
| +TEST_F(JsonStreamParserTest, ArrayValues) {
|
| + StringPiece str =
|
| + "[true, false, null, 'a string', \"another string\", [22, -127, 45.3, "
|
| + "-1056.4, 11779497823553162765], {'key': true}]";
|
| for (int i = 0; i <= str.length(); ++i) {
|
| ow_.StartList("")
|
| ->RenderBool("", true)
|
| ->RenderBool("", false)
|
| ->RenderNull("")
|
| - ->RenderString("", "one")
|
| - ->RenderString("", "two")
|
| - ->EndList();
|
| - DoTest(str, i);
|
| - }
|
| -}
|
| -
|
| -// - array containing array, object
|
| -TEST_F(JsonStreamParserTest, ArrayComplexValues) {
|
| - StringPiece str =
|
| - "[[22, -127, 45.3, -1056.4, 11779497823553162765], {'key': true}]";
|
| - for (int i = 0; i <= str.length(); ++i) {
|
| - ow_.StartList("")
|
| + ->RenderString("", "a string")
|
| + ->RenderString("", "another string")
|
| ->StartList("")
|
| ->RenderUint64("", 22)
|
| ->RenderInt64("", -127)
|
| @@ -358,7 +335,6 @@ TEST_F(JsonStreamParserTest, ArrayComplexValues) {
|
| }
|
| }
|
|
|
| -
|
| // - object containing array, object, value (true, false, null, num, string)
|
| TEST_F(JsonStreamParserTest, ObjectValues) {
|
| StringPiece str =
|
| @@ -711,19 +687,17 @@ TEST_F(JsonStreamParserTest, NegativeNumberTooBig) {
|
| }
|
| }
|
|
|
| +/*
|
| +TODO(sven): Fail parsing when parsing a double that is too large.
|
| +
|
| TEST_F(JsonStreamParserTest, DoubleTooBig) {
|
| - StringPiece str = "[1.89769e+308]";
|
| + StringPiece str = "[184464073709551232321616.45]";
|
| for (int i = 0; i <= str.length(); ++i) {
|
| ow_.StartList("");
|
| - DoErrorTest(str, i, "Number exceeds the range of double.");
|
| - }
|
| - str = "[-1.89769e+308]";
|
| - for (int i = 0; i <= str.length(); ++i) {
|
| - ow_.StartList("");
|
| - DoErrorTest(str, i, "Number exceeds the range of double.");
|
| + DoErrorTest(str, i, "Unable to parse number");
|
| }
|
| }
|
| -
|
| +*/
|
|
|
| // invalid bare backslash.
|
| TEST_F(JsonStreamParserTest, UnfinishedEscape) {
|
|
|