@@ -289,6 +289,10 @@ BOOST_AUTO_TEST_CASE(json_parse_errors)
289
289
{
290
290
// Valid
291
291
BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" 1.0" ).get_real (), 1.0 );
292
+ BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" true" ).get_bool (), true );
293
+ BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" [false]" )[0 ].get_bool (), false );
294
+ BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" {\" a\" : true}" )[" a" ].get_bool (), true );
295
+ BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" {\" 1\" : \" true\" }" )[" 1" ].get_str (), " true" );
292
296
// Valid, with leading or trailing whitespace
293
297
BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" 1.0" ).get_real (), 1.0 );
294
298
BOOST_CHECK_EQUAL (ParseNonRFCJSONValue (" 1.0 " ).get_real (), 1.0 );
@@ -301,6 +305,11 @@ BOOST_AUTO_TEST_CASE(json_parse_errors)
301
305
// Invalid, trailing garbage
302
306
BOOST_CHECK_THROW (ParseNonRFCJSONValue (" 1.0sds" ), std::runtime_error);
303
307
BOOST_CHECK_THROW (ParseNonRFCJSONValue (" 1.0]" ), std::runtime_error);
308
+ // Invalid, keys have to be names
309
+ BOOST_CHECK_THROW (ParseNonRFCJSONValue (" {1: \" true\" }" ), std::runtime_error);
310
+ BOOST_CHECK_THROW (ParseNonRFCJSONValue (" {true: 1}" ), std::runtime_error);
311
+ BOOST_CHECK_THROW (ParseNonRFCJSONValue (" {[1]: 1}" ), std::runtime_error);
312
+ BOOST_CHECK_THROW (ParseNonRFCJSONValue (" {{\" a\" : \" a\" }: 1}" ), std::runtime_error);
304
313
// BTC addresses should fail parsing
305
314
BOOST_CHECK_THROW (ParseNonRFCJSONValue (" 175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W" ), std::runtime_error);
306
315
BOOST_CHECK_THROW (ParseNonRFCJSONValue (" 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNL" ), std::runtime_error);
0 commit comments