@@ -2301,6 +2301,44 @@ JSONTEST_FIXTURE(CharReaderAllowSpecialFloatsTest, issue209) {
2301
2301
JSONTEST_ASSERT_EQUAL (std::numeric_limits<double >::infinity (), root.get (" b" , 0.0 ));
2302
2302
JSONTEST_ASSERT_EQUAL (-std::numeric_limits<double >::infinity (), root.get (" c" , 0.0 ));
2303
2303
}
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
+
2304
2342
{
2305
2343
char const doc[] = " {\" posInf\" : Infinity, \" NegInf\" : -Infinity}" ;
2306
2344
bool ok = reader->parse (
0 commit comments