Selaa lähdekoodia

Fixing size tests to be inclusive on both sides.

Sam Jaffe 6 vuotta sitten
vanhempi
commit
7290811a18

+ 3 - 3
src/main/lombok/org/leumasjaffe/json/schema/factory/SchemaV6Factory.java

@@ -47,16 +47,16 @@ class SchemaV6Factory extends SchemaFactory {
 		case "exclusiveMaximum": return new NumberTester(d -> d < value.asDouble());
 		case "minimum": return new NumberTester(d -> d >= value.asDouble());
 		case "exclusiveMinimum": return new NumberTester(d -> d > value.asDouble());
-		case "maxLength": return new SizeTester(STRING, i -> i < value.asInt());
+		case "maxLength": return new SizeTester(STRING, i -> i <= value.asInt());
 		case "minLength": return new SizeTester(STRING, i -> i >= value.asInt(0));
 		case "pattern": return new SimpleTester(STRING, j -> j.asText().matches(value.asText()));
 		case "additionalItems": return new AllItemsTester(ARRAY, create(value));
 		case "items": return value.isArray() ? new ItemsTester(createArray(value)) : new AllItemsTester(ARRAY, create(value));
-		case "maxItems": return new SizeTester(ARRAY, i -> i < value.asInt());
+		case "maxItems": return new SizeTester(ARRAY, i -> i <= value.asInt());
 		case "minItems": return new SizeTester(ARRAY, i -> i >= value.asInt(0));
 		case "uniqueItems": return value.asBoolean() ? UniqueItemTester.INSTANCE : FixedTester.ACCEPT;
 		case "contains": return new ContainsTester(create(value));
-		case "maxProperties": return new SizeTester(OBJECT, i -> i < value.asInt());
+		case "maxProperties": return new SizeTester(OBJECT, i -> i <= value.asInt());
 		case "minProperties": return new SizeTester(OBJECT, i -> i >= value.asInt(0));
 		case "required": {
 			final List<String> reqKeys = JsonHelper.toArray(value, JsonNode::asText);

+ 3 - 3
src/test/java/org/leumasjaffe/json/schema/factory/SchemaV6FactoryTest.java

@@ -136,7 +136,7 @@ public class SchemaV6FactoryTest {
 	
 	@Test
 	public void testMaxLengthSchema() {
-		Tester test = fromSingleElement("{ \"maxLength\": 2 }");
+		Tester test = fromSingleElement("{ \"maxLength\": 1 }");
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertFalse(test.accepts(new DoubleNode(1.5)));
 		assertTrue(test.accepts(new TextNode("")));
@@ -195,7 +195,7 @@ public class SchemaV6FactoryTest {
 	
 	@Test
 	public void testMaxItemsSchema() {
-		Tester test = fromSingleElement("{ \"maxItems\": 2 }");
+		Tester test = fromSingleElement("{ \"maxItems\": 1 }");
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertFalse(test.accepts(new DoubleNode(1.5)));
 		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
@@ -243,7 +243,7 @@ public class SchemaV6FactoryTest {
 	
 	@Test
 	public void testMaxPropertiesSchema() {
-		Tester test = fromSingleElement("{ \"maxProperties\": 2 }");
+		Tester test = fromSingleElement("{ \"maxProperties\": 1 }");
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertFalse(test.accepts(new DoubleNode(1.5)));
 		final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);