From 9a576fe1d9e148c626f0616c46b826295ba1cb64 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 22 May 2017 22:49:39 +0200 Subject: [PATCH] :white_check_mark: added test for #367 --- test/src/unit-regression.cpp | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index db281ac45..a5e79ab60 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -34,6 +34,7 @@ using nlohmann::json; #include #include +#include TEST_CASE("regression tests") { @@ -709,6 +710,44 @@ TEST_CASE("regression tests") CHECK_THROWS_WITH(ss >> j, "[json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input"); } + + SECTION("second example from #529") + { + std::string str = "{\n\"one\" : 1,\n\"two\" : 2\n}\n{\n\"three\" : 3\n}"; + + { + std::ofstream file("test.json"); + file << str; + } + + std::ifstream stream("test.json", std::ifstream::in); + json val; + + size_t i = 0; + while (stream.peek() != EOF) + { + CAPTURE(i); + CHECK_NOTHROW(stream >> val); + + CHECK(i < 2); + + if (i == 0) + { + CHECK(val == json({{"one", 1}, {"two", 2}})); + CHECK(stream.tellg() == 28); + } + + if (i == 1) + { + CHECK(val == json({{"three", 3}})); + CHECK(stream.tellg() == 44); + } + + ++i; + } + + std::remove("test.json"); + } } SECTION("issue #389 - Integer-overflow (OSS-Fuzz issue 267)")