/// needed. This format is used by most of the tests.
///
/// @param in string to be parsed
+/// @param verbose display the exception message when it fails
/// @return ElementPtr structure representing parsed JSON
inline isc::data::ConstElementPtr
-parseDHCP6(const std::string& in)
+parseDHCP6(const std::string& in, bool verbose = false)
{
try {
isc::dhcp::Parser6Context ctx;
return (ctx.parseString(in, isc::dhcp::Parser6Context::SUBPARSER_DHCP6));
}
catch (const std::exception& ex) {
- std::cout << "EXCEPTION: " << ex.what() << std::endl;
+ if (verbose) {
+ std::cout << "EXCEPTION: " << ex.what() << std::endl;
+ }
throw;
}
}
/// This function parses specified text as JSON that defines option definitions.
///
/// @param in string to be parsed
+/// @param verbose display the exception message when it fails
/// @return ElementPtr structure representing parsed JSON
inline isc::data::ConstElementPtr
-parseOPTION_DEF(const std::string& in)
+parseOPTION_DEF(const std::string& in, bool verbose = false)
{
try {
isc::dhcp::Parser6Context ctx;
return (ctx.parseString(in, isc::dhcp::Parser6Context::PARSER_OPTION_DEF));
}
catch (const std::exception& ex) {
- std::cout << "EXCEPTION: " << ex.what() << std::endl;
+ if (verbose) {
+ std::cout << "EXCEPTION: " << ex.what() << std::endl;
+ }
throw;
}
}
Parser6Context::PARSER_JSON,
"Can't open include file /foo/bar");
+ // case sensitivity
+ testError("{ \"foo\": True }",
+ Parser6Context::PARSER_JSON,
+ "<string>:1.10: Invalid character: T");
+ testError("{ \"foo\": NULL }",
+ Parser6Context::PARSER_JSON,
+ "<string>:1.10: Invalid character: N");
+
// numbers
testError("123",
Parser6Context::PARSER_DHCP6,