added test for #367

This commit is contained in:
Niels Lohmann 2017-05-22 22:49:39 +02:00
parent c7bd01edf2
commit 9a576fe1d9
No known key found for this signature in database
GPG key ID: 7F3CEA63AE251B69

View file

@ -34,6 +34,7 @@ using nlohmann::json;
#include <fstream> #include <fstream>
#include <list> #include <list>
#include <cstdio>
TEST_CASE("regression tests") TEST_CASE("regression tests")
{ {
@ -709,6 +710,44 @@ TEST_CASE("regression tests")
CHECK_THROWS_WITH(ss >> j, CHECK_THROWS_WITH(ss >> j,
"[json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input"); "[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)") SECTION("issue #389 - Integer-overflow (OSS-Fuzz issue 267)")