Skip to content

Commit 1d02e59

Browse files
committed
test: add cases to JSON parsing
1 parent 78c3081 commit 1d02e59

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/test/rpc_tests.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,10 @@ BOOST_AUTO_TEST_CASE(json_parse_errors)
289289
{
290290
// Valid
291291
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");
292296
// Valid, with leading or trailing whitespace
293297
BOOST_CHECK_EQUAL(ParseNonRFCJSONValue(" 1.0").get_real(), 1.0);
294298
BOOST_CHECK_EQUAL(ParseNonRFCJSONValue("1.0 ").get_real(), 1.0);
@@ -301,6 +305,11 @@ BOOST_AUTO_TEST_CASE(json_parse_errors)
301305
// Invalid, trailing garbage
302306
BOOST_CHECK_THROW(ParseNonRFCJSONValue("1.0sds"), std::runtime_error);
303307
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);
304313
// BTC addresses should fail parsing
305314
BOOST_CHECK_THROW(ParseNonRFCJSONValue("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"), std::runtime_error);
306315
BOOST_CHECK_THROW(ParseNonRFCJSONValue("3J98t1WpEZ73CNmQviecrnyiWrnqRhWNL"), std::runtime_error);

0 commit comments

Comments
 (0)