瀏覽代碼

fix: compiler errors and test regression(s)

Sam Jaffe 1 周之前
父節點
當前提交
5b3e2b24f7
共有 1 個文件被更改,包括 16 次插入3 次删除
  1. 16 3
      tests/validation_visitor_test.cxx

+ 16 - 3
tests/validation_visitor_test.cxx

@@ -28,7 +28,7 @@ protected:
   auto visit(jvalidate::detail::Pointer ptr, auto const & cons, JSON & json,
              jvalidate::ValidationResult * result = nullptr, bool annotate_everything = false) {
     JsonCppAdapter const adapter(json);
-    ValidationVisitor visitor(node_, adapter, cfg_, regex_, extension_, result);
+    ValidationVisitor visitor(node_, adapter, cfg_, regex_, format_, extension_, result);
     if (annotate_everything) {
       visitor.tracking_ = StoreResults::ForAnything;
     }
@@ -43,10 +43,14 @@ protected:
   }
 
   void config(jvalidate::ValidationConfig cfg) { cfg_ = cfg; }
+  void format(FormatValidator::UserDefinedFormats && fmts) {
+    format_ = {std::move(fmts), jvalidate::StdRegexEngine::is_regex};
+  }
 
 private:
   jvalidate::schema::Node node_;
   jvalidate::StdRegexEngine regex_;
+  jvalidate::FormatValidator format_{jvalidate::StdRegexEngine::is_regex};
   jvalidate::ValidationConfig cfg_;
   jvalidate::detail::StubExtensionVisitor extension_;
 };
@@ -117,13 +121,22 @@ TEST_F(ValidationVisitorTest, EnumConstraintAnnotatesMatchingIndex) {
   EXPECT_THAT(result, ErrorAt("enum", "1"));
 }
 
+TEST_F(ValidationVisitorTest, UnknownFormatIsAccept) {
+  constraint::FormatConstraint cons{"bogus", Draft2020_12, true};
+  config({.validate_format = true});
+
+  ValidationResult result;
+  EXPECT_THAT(visit("/format"_jptr, cons, "\"Hello\""_json, &result), Eq(Status::Accept));
+}
+
 TEST_F(ValidationVisitorTest, UnimplementedFormatIsError) {
-  constraint::FormatConstraint cons{"bogus", true};
+  constraint::FormatConstraint cons{"bogus", Draft2020_12, true};
   config({.validate_format = true});
+  format({{"bogus", nullptr}});
 
   ValidationResult result;
   EXPECT_THAT(visit("/format"_jptr, cons, "\"Hello\""_json, &result), Eq(Status::Reject));
-  EXPECT_THAT(result, ErrorAt("format", "bogus is unimplemented"));
+  EXPECT_THAT(result, ErrorAt("format", "unimplemented format 'bogus'"));
 }
 }