Commit aef276b9 authored by Francis Dupont's avatar Francis Dupont

[5036] Optional exception display and case sensitive JSON unit tests

parent b7837f89
...@@ -656,16 +656,19 @@ parseJSON(const std::string& in) ...@@ -656,16 +656,19 @@ parseJSON(const std::string& in)
/// needed. This format is used by most of the tests. /// needed. This format is used by most of the tests.
/// ///
/// @param in string to be parsed /// @param in string to be parsed
/// @param verbose display the exception message when it fails
/// @return ElementPtr structure representing parsed JSON /// @return ElementPtr structure representing parsed JSON
inline isc::data::ConstElementPtr inline isc::data::ConstElementPtr
parseDHCP6(const std::string& in) parseDHCP6(const std::string& in, bool verbose = false)
{ {
try { try {
isc::dhcp::Parser6Context ctx; isc::dhcp::Parser6Context ctx;
return (ctx.parseString(in, isc::dhcp::Parser6Context::SUBPARSER_DHCP6)); return (ctx.parseString(in, isc::dhcp::Parser6Context::SUBPARSER_DHCP6));
} }
catch (const std::exception& ex) { catch (const std::exception& ex) {
std::cout << "EXCEPTION: " << ex.what() << std::endl; if (verbose) {
std::cout << "EXCEPTION: " << ex.what() << std::endl;
}
throw; throw;
} }
} }
...@@ -675,16 +678,19 @@ parseDHCP6(const std::string& in) ...@@ -675,16 +678,19 @@ parseDHCP6(const std::string& in)
/// This function parses specified text as JSON that defines option definitions. /// This function parses specified text as JSON that defines option definitions.
/// ///
/// @param in string to be parsed /// @param in string to be parsed
/// @param verbose display the exception message when it fails
/// @return ElementPtr structure representing parsed JSON /// @return ElementPtr structure representing parsed JSON
inline isc::data::ConstElementPtr inline isc::data::ConstElementPtr
parseOPTION_DEF(const std::string& in) parseOPTION_DEF(const std::string& in, bool verbose = false)
{ {
try { try {
isc::dhcp::Parser6Context ctx; isc::dhcp::Parser6Context ctx;
return (ctx.parseString(in, isc::dhcp::Parser6Context::PARSER_OPTION_DEF)); return (ctx.parseString(in, isc::dhcp::Parser6Context::PARSER_OPTION_DEF));
} }
catch (const std::exception& ex) { catch (const std::exception& ex) {
std::cout << "EXCEPTION: " << ex.what() << std::endl; if (verbose) {
std::cout << "EXCEPTION: " << ex.what() << std::endl;
}
throw; throw;
} }
} }
......
...@@ -326,6 +326,14 @@ TEST(ParserTest, errors) { ...@@ -326,6 +326,14 @@ TEST(ParserTest, errors) {
Parser6Context::PARSER_JSON, Parser6Context::PARSER_JSON,
"Can't open include file /foo/bar"); "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 // numbers
testError("123", testError("123",
Parser6Context::PARSER_DHCP6, Parser6Context::PARSER_DHCP6,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment