Переглянути джерело

Add tests for array/object size

Sam Jaffe 6 роки тому
батько
коміт
9786fd0957

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

@@ -11,9 +11,13 @@ import org.leumasjaffe.json.schema.Tester;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.BooleanNode;
 import com.fasterxml.jackson.databind.node.DoubleNode;
 import com.fasterxml.jackson.databind.node.IntNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.NullNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 
 public class SchemaV6FactoryTest {
 	SchemaV6Factory factory;
@@ -128,4 +132,65 @@ public class SchemaV6FactoryTest {
 		assertTrue(test.accepts(new IntNode(3)));
 		assertFalse(test.accepts(new DoubleNode(2.5)));
 	}
+	
+	@Test
+	public void testMaxItemsSchema() {
+		Tester test = fromSingleElement("{ \"maxItems\": 2 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertFalse(test.accepts(new DoubleNode(1.5)));
+		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
+		assertTrue(test.accepts(node));
+		node.add(false);
+		node.add(false);
+		assertFalse(test.accepts(node));
+	}
+	
+	@Test
+	public void testMinItemsSchema() {
+		Tester test = fromSingleElement("{ \"minItems\": 2 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertFalse(test.accepts(new DoubleNode(1.5)));
+		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
+		assertFalse(test.accepts(node));
+		node.add(false);
+		node.add(false);
+		assertTrue(test.accepts(node));
+	}
+	
+	@Test
+	public void testUniqueItemsSchema() {
+		Tester uniq = fromSingleElement("{ \"uniqueItems\": true }");
+		Tester any = fromSingleElement("{ \"uniqueItems\": false }");
+		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
+		node.add(false);
+		assertTrue(uniq.accepts(node));
+		assertTrue(any.accepts(node));
+		node.add(false);
+		assertFalse(uniq.accepts(node));
+		assertTrue(any.accepts(node));
+	}
+	
+	@Test
+	public void testMaxPropertiesSchema() {
+		Tester test = fromSingleElement("{ \"maxProperties\": 2 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertFalse(test.accepts(new DoubleNode(1.5)));
+		final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
+		assertTrue(test.accepts(node));
+		node.set("A", BooleanNode.FALSE);
+		node.set("B", BooleanNode.FALSE);
+		assertFalse(test.accepts(node));
+	}
+	
+	@Test
+	public void testMinPropertiesSchema() {
+		Tester test = fromSingleElement("{ \"minProperties\": 2 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertFalse(test.accepts(new DoubleNode(1.5)));
+		final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
+		assertFalse(test.accepts(node));
+		node.set("A", BooleanNode.FALSE);
+		node.set("B", BooleanNode.FALSE);
+		assertTrue(test.accepts(node));
+	}
 }