@@ -2301,6 +2301,44 @@ JSONTEST_FIXTURE(CharReaderAllowSpecialFloatsTest, issue209) {
23012301 JSONTEST_ASSERT_EQUAL (std::numeric_limits<double >::infinity (), root.get (" b" , 0.0 ));
23022302 JSONTEST_ASSERT_EQUAL (-std::numeric_limits<double >::infinity (), root.get (" c" , 0.0 ));
23032303 }
2304+
2305+ struct TestData {
2306+ int line;
2307+ bool ok_expected;
2308+ std::string in;
2309+ std::string out;
2310+ };
2311+ const TestData test_data[] = {
2312+ { __LINE__, 1 , " 9" },
2313+ { __LINE__, 0 , " 0Infinity" },
2314+ { __LINE__, 0 , " 1Infinity" },
2315+ { __LINE__, 0 , " 9Infinity" },
2316+
2317+ { __LINE__, 0 , " 0nfinity" },
2318+ { __LINE__, 0 , " 1nfinity" },
2319+ { __LINE__, 0 , " 9nfinity" },
2320+
2321+ { __LINE__, 0 , " nfinity" },
2322+ { __LINE__, 0 , " .nfinity" },
2323+ { __LINE__, 0 , " 9nfinity" },
2324+ { __LINE__, 0 , " -nfinity" },
2325+ { __LINE__, 1 , " Infinity" },
2326+ { __LINE__, 0 , " .Infinity" },
2327+ { __LINE__, 0 , " _Infinity" },
2328+ { __LINE__, 0 , " _nfinity" },
2329+ { __LINE__, 1 , " -Infinity" },
2330+ };
2331+ for (size_t tdi = 0 ; tdi < sizeof (test_data) / sizeof (*test_data); ++tdi) {
2332+ const TestData& td = test_data[tdi];
2333+ std::string s = std::string (" {\" a\" :" ) + td.in + std::string (" }" );
2334+ bool ok = reader->parse (&*s.begin (),
2335+ &*s.begin () + s.size (),
2336+ &root, &errs);
2337+ JSONTEST_ASSERT_EQUAL (td.ok_expected , ok)
2338+ << " s:{" << s << " }, "
2339+ << " line:" << td.line << " \n " ;
2340+ }
2341+
23042342 {
23052343 char const doc[] = " {\" posInf\" : Infinity, \" NegInf\" : -Infinity}" ;
23062344 bool ok = reader->parse (
0 commit comments