Browse Source

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

Francis Dupont 8 years ago
parent
commit
aef276b92f
2 changed files with 18 additions and 4 deletions
  1. 10 4
      src/bin/dhcp6/tests/dhcp6_test_utils.h
  2. 8 0
      src/bin/dhcp6/tests/parser_unittest.cc

+ 10 - 4
src/bin/dhcp6/tests/dhcp6_test_utils.h

@@ -656,16 +656,19 @@ parseJSON(const std::string& in)
 /// 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;
     }
 }
@@ -675,16 +678,19 @@ parseDHCP6(const std::string& in)
 /// 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;
     }
 }

+ 8 - 0
src/bin/dhcp6/tests/parser_unittest.cc

@@ -326,6 +326,14 @@ TEST(ParserTest, errors) {
               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,