[JOHNZON-322] ensure jsonschema can validate negative bounds
diff --git a/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java b/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java
index 35e920b..14c5ee4 100644
--- a/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java
+++ b/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/spi/builtin/BaseNumberValidation.java
@@ -37,9 +37,6 @@
@Override
protected Stream<ValidationResult.ValidationError> onNumber(final JsonNumber number) {
final double val = number.doubleValue();
- if (val <= 0) {
- return toError(val);
- }
if (isValid(val)) {
return Stream.empty();
}
diff --git a/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java b/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java
index d3247ff..08ea742 100644
--- a/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java
+++ b/johnzon-jsonschema/src/test/java/org/apache/johnzon/jsonschema/JsonSchemaValidatorTest.java
@@ -242,28 +242,55 @@
@Test
public void minimum() {
- final JsonSchemaValidator validator = factory.newInstance(jsonFactory.createObjectBuilder()
- .add("type", "object")
- .add("properties", jsonFactory.createObjectBuilder()
- .add("age", jsonFactory.createObjectBuilder()
- .add("type", "number")
- .add("minimum", 5)
- .build())
- .build())
- .build());
+ {
+ final JsonSchemaValidator validator = factory.newInstance(jsonFactory.createObjectBuilder()
+ .add("type", "object")
+ .add("properties", jsonFactory.createObjectBuilder()
+ .add("age", jsonFactory.createObjectBuilder()
+ .add("type", "number")
+ .add("minimum", 5)
+ .build())
+ .build())
+ .build());
- assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 5).build()).isSuccess());
- assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 6).build()).isSuccess());
+ assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 5).build()).isSuccess());
+ assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 6).build()).isSuccess());
- final ValidationResult failure = validator.apply(jsonFactory.createObjectBuilder().add("age", 2).build());
- assertFalse(failure.isSuccess());
- final Collection<ValidationResult.ValidationError> errors = failure.getErrors();
- assertEquals(1, errors.size());
- final ValidationResult.ValidationError error = errors.iterator().next();
- assertEquals("/age", error.getField());
- assertEquals("2.0 is less than 5.0", error.getMessage());
+ final ValidationResult failure = validator.apply(jsonFactory.createObjectBuilder().add("age", 2).build());
+ assertFalse(failure.isSuccess());
+ final Collection<ValidationResult.ValidationError> errors = failure.getErrors();
+ assertEquals(1, errors.size());
+ final ValidationResult.ValidationError error = errors.iterator().next();
+ assertEquals("/age", error.getField());
+ assertEquals("2.0 is less than 5.0", error.getMessage());
- validator.close();
+ validator.close();
+ }
+ {
+ final JsonSchemaValidator validator = factory.newInstance(jsonFactory.createObjectBuilder()
+ .add("type", "object")
+ .add("properties", jsonFactory.createObjectBuilder()
+ .add("age", jsonFactory.createObjectBuilder()
+ .add("type", "number")
+ .add("minimum", -1)
+ .build())
+ .build())
+ .build());
+
+ assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 1).build()).isSuccess());
+ assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", 0).build()).isSuccess());
+ assertTrue(validator.apply(jsonFactory.createObjectBuilder().add("age", -1).build()).isSuccess());
+
+ final ValidationResult failure = validator.apply(jsonFactory.createObjectBuilder().add("age", -2).build());
+ assertFalse(failure.isSuccess());
+ final Collection<ValidationResult.ValidationError> errors = failure.getErrors();
+ assertEquals(1, errors.size());
+ final ValidationResult.ValidationError error = errors.iterator().next();
+ assertEquals("/age", error.getField());
+ assertEquals("-2.0 is less than -1.0", error.getMessage());
+
+ validator.close();
+ }
}
@Test