|
|
@@ -18,6 +18,7 @@
|
|
|
#include <json/value.h>
|
|
|
|
|
|
using enum jvalidate::schema::Version;
|
|
|
+using testing::Not;
|
|
|
|
|
|
auto operator""_jptr(char const * data, size_t len) {
|
|
|
return jvalidate::detail::Pointer(std::string_view{data, len});
|
|
|
@@ -72,6 +73,42 @@ TEST(Annotation, AttachesFormattingAnnotation) {
|
|
|
EXPECT_THAT(result, AnnotationAt(""_jptr, "/format"_jptr, "format 'uri'"));
|
|
|
}
|
|
|
|
|
|
+TEST(Annotation, AnnotatesErrors) {
|
|
|
+ auto const schema = R"({
|
|
|
+ "minimum": 5
|
|
|
+ })"_json;
|
|
|
+
|
|
|
+ auto const instance = R"(4)"_json;
|
|
|
+
|
|
|
+ jvalidate::ValidationResult result = validate(schema, instance);
|
|
|
+
|
|
|
+ EXPECT_THAT(result, AnnotationAt(""_jptr, "/minimum"_jptr, "4 < 5"));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(Annotation, DoesNotAnnotatesValid) {
|
|
|
+ auto const schema = R"({
|
|
|
+ "minimum": 5
|
|
|
+ })"_json;
|
|
|
+
|
|
|
+ auto const instance = R"(6)"_json;
|
|
|
+
|
|
|
+ jvalidate::ValidationResult result = validate(schema, instance);
|
|
|
+
|
|
|
+ EXPECT_THAT(result, Not(HasAnnotationsFor(""_jptr)));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(Annotation, NotSchemaFlipsAnnotationRule) {
|
|
|
+ auto const schema = R"({
|
|
|
+ "not": { "minimum": 5 }
|
|
|
+ })"_json;
|
|
|
+
|
|
|
+ auto const instance = R"(6)"_json;
|
|
|
+
|
|
|
+ jvalidate::ValidationResult result = validate(schema, instance);
|
|
|
+
|
|
|
+ EXPECT_THAT(result, AnnotationAt(""_jptr, "/not/minimum"_jptr, "6 >= 5"));
|
|
|
+}
|
|
|
+
|
|
|
int main(int argc, char ** argv) {
|
|
|
testing::InitGoogleMock(&argc, argv);
|
|
|
return RUN_ALL_TESTS();
|