From 73154fb546e86851afe18367752d510e4df67ca8 Mon Sep 17 00:00:00 2001 From: Billy Donahue Date: Sat, 5 Sep 2015 03:48:38 -0400 Subject: [PATCH 1/3] expanded Infinity test --- src/test_lib_json/main.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index ef93479..fcd2050 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -2301,6 +2301,44 @@ JSONTEST_FIXTURE(CharReaderAllowSpecialFloatsTest, issue209) { JSONTEST_ASSERT_EQUAL(std::numeric_limits::infinity(), root.get("b", 0.0)); JSONTEST_ASSERT_EQUAL(-std::numeric_limits::infinity(), root.get("c", 0.0)); } + + struct TestData { + int line; + bool ok_expected; + std::string in; + std::string out; + }; + const TestData test_data[] = { + { __LINE__, 1, "9"}, + { __LINE__, 0, "0Infinity"}, + { __LINE__, 0, "1Infinity"}, + { __LINE__, 0, "9Infinity"}, + + { __LINE__, 0, "0nfinity"}, + { __LINE__, 0, "1nfinity"}, + { __LINE__, 0, "9nfinity"}, + + { __LINE__, 0, "nfinity"}, + { __LINE__, 0, ".nfinity"}, + { __LINE__, 0, "9nfinity"}, + { __LINE__, 0, "-nfinity"}, + { __LINE__, 1, "Infinity"}, + { __LINE__, 0, ".Infinity"}, + { __LINE__, 0, "_Infinity"}, + { __LINE__, 0, "_nfinity"}, + { __LINE__, 1, "-Infinity"}, + }; + for (size_t tdi = 0; tdi < sizeof(test_data) / sizeof(*test_data); ++tdi) { + const TestData& td = test_data[tdi]; + std::string s = std::string("{\"a\":") + td.in + std::string("}"); + bool ok = reader->parse(&*s.begin(), + &*s.begin() + s.size(), + &root, &errs); + JSONTEST_ASSERT_EQUAL(td.ok_expected, ok) + << " s:{" << s << "}, " + << "line:" << td.line << "\n"; + } + { char const doc[] = "{\"posInf\": Infinity, \"NegInf\": -Infinity}"; bool ok = reader->parse( From bfffe8cec7908a3d84da355d9580a07dc16734e3 Mon Sep 17 00:00:00 2001 From: Billy Donahue Date: Sat, 5 Sep 2015 04:07:56 -0400 Subject: [PATCH 2/3] prettier test --- src/test_lib_json/main.cpp | 53 ++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index fcd2050..ddd7469 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -2304,39 +2304,42 @@ JSONTEST_FIXTURE(CharReaderAllowSpecialFloatsTest, issue209) { struct TestData { int line; - bool ok_expected; + bool ok; std::string in; std::string out; }; const TestData test_data[] = { - { __LINE__, 1, "9"}, - { __LINE__, 0, "0Infinity"}, - { __LINE__, 0, "1Infinity"}, - { __LINE__, 0, "9Infinity"}, - - { __LINE__, 0, "0nfinity"}, - { __LINE__, 0, "1nfinity"}, - { __LINE__, 0, "9nfinity"}, - - { __LINE__, 0, "nfinity"}, - { __LINE__, 0, ".nfinity"}, - { __LINE__, 0, "9nfinity"}, - { __LINE__, 0, "-nfinity"}, - { __LINE__, 1, "Infinity"}, - { __LINE__, 0, ".Infinity"}, - { __LINE__, 0, "_Infinity"}, - { __LINE__, 0, "_nfinity"}, - { __LINE__, 1, "-Infinity"}, + {__LINE__, 1, "{\"a\":9}"}, + {__LINE__, 0, "{\"a\":0Infinity}"}, + {__LINE__, 0, "{\"a\":1Infinity}"}, + {__LINE__, 0, "{\"a\":9Infinity}"}, + {__LINE__, 0, "{\"a\":0nfinity}"}, + {__LINE__, 0, "{\"a\":1nfinity}"}, + {__LINE__, 0, "{\"a\":9nfinity}"}, + {__LINE__, 0, "{\"a\":nfinity}"}, + {__LINE__, 0, "{\"a\":.nfinity}"}, + {__LINE__, 0, "{\"a\":9nfinity}"}, + {__LINE__, 0, "{\"a\":-nfinity}"}, + {__LINE__, 1, "{\"a\":Infinity}"}, + {__LINE__, 0, "{\"a\":.Infinity}"}, + {__LINE__, 0, "{\"a\":_Infinity}"}, + {__LINE__, 0, "{\"a\":_nfinity}"}, + {__LINE__, 1, "{\"a\":-Infinity}"} }; for (size_t tdi = 0; tdi < sizeof(test_data) / sizeof(*test_data); ++tdi) { const TestData& td = test_data[tdi]; - std::string s = std::string("{\"a\":") + td.in + std::string("}"); - bool ok = reader->parse(&*s.begin(), - &*s.begin() + s.size(), + bool ok = reader->parse(&*td.in.begin(), + &*td.in.begin() + td.in.size(), &root, &errs); - JSONTEST_ASSERT_EQUAL(td.ok_expected, ok) - << " s:{" << s << "}, " - << "line:" << td.line << "\n"; + JSONTEST_ASSERT(td.ok == ok) + << "line:" << td.line << "\n" + << " expected: {" + << "ok:" << td.ok + << ", in:\'" << td.in << "\'" + << "}\n" + << " actual: {" + << "ok:" << ok + << "}\n"; } { From 7f7bbeff76965ef811110926aec1c520e7b7802e Mon Sep 17 00:00:00 2001 From: Billy Donahue Date: Sat, 5 Sep 2015 04:22:18 -0400 Subject: [PATCH 3/3] don't need out field of TestData --- src/test_lib_json/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp index ddd7469..ce96295 100644 --- a/src/test_lib_json/main.cpp +++ b/src/test_lib_json/main.cpp @@ -2306,7 +2306,6 @@ JSONTEST_FIXTURE(CharReaderAllowSpecialFloatsTest, issue209) { int line; bool ok; std::string in; - std::string out; }; const TestData test_data[] = { {__LINE__, 1, "{\"a\":9}"},