浏览代码

Start adding acceptedTypes() overrides with FixedTester and AllItemsTester

Sam Jaffe 6 年之前
父节点
当前提交
cc7079ce2f

+ 5 - 0
src/main/lombok/org/leumasjaffe/json/schema/tester/AllItemsTester.java

@@ -17,6 +17,11 @@ import lombok.experimental.FieldDefaults;
 public class AllItemsTester implements Tester {
 	JsonNodeType type;
 	Tester schema;
+	
+	@Override
+	public JsonNodeType[] acceptedTypes() {
+		return new JsonNodeType[]{type};
+	}
 
 	@Override
 	public boolean accepts(JsonNode node) {

+ 4 - 0
src/main/lombok/org/leumasjaffe/json/schema/tester/FixedTester.java

@@ -21,6 +21,10 @@ public class FixedTester implements Tester {
 	};
 	boolean returns;
 
+	@Override
+	public JsonNodeType[] acceptedTypes() {
+		return ANY;
+	}
 
 	@Override
 	public boolean accepts(JsonNode node) {

+ 21 - 7
src/test/java/org/leumasjaffe/json/schema/tester/AllItemsTesterTest.java

@@ -1,6 +1,9 @@
 package org.leumasjaffe.json.schema.tester;
 
 import static org.junit.Assert.*;
+import static org.hamcrest.core.Is.is;
+import static com.fasterxml.jackson.databind.node.JsonNodeType.ARRAY;
+import static com.fasterxml.jackson.databind.node.JsonNodeType.OBJECT;
 
 import org.junit.Test;
 
@@ -8,19 +11,30 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.JsonNodeType;
-import com.fasterxml.jackson.databind.node.NullNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 
 public class AllItemsTesterTest {
 
 	@Test
-	public void testRejectsNonArray() {
-		assertFalse(new AllItemsTester(JsonNodeType.ARRAY, FixedTester.ACCEPT).accepts(NullNode.getInstance()));
+	public void testAcceptsType() {
+		assertThat(new AllItemsTester(ARRAY, FixedTester.ACCEPT).acceptedTypes(),
+				is(new JsonNodeType[]{ARRAY}));
+		assertThat(new AllItemsTester(OBJECT, FixedTester.ACCEPT).acceptedTypes(),
+				is(new JsonNodeType[]{OBJECT}));
+	}
+	
+	@Test
+	public void testRejectsNonMatching() {
+		assertFalse(new AllItemsTester(ARRAY, FixedTester.ACCEPT)
+				.accepts(new ObjectNode(JsonNodeFactory.instance)));
+		assertFalse(new AllItemsTester(OBJECT, FixedTester.ACCEPT)
+				.accepts(new ArrayNode(JsonNodeFactory.instance)));
 	}
 
 	@Test
 	public void testAcceptsEmptyArray() {
 		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
-		assertTrue(new AllItemsTester(JsonNodeType.ARRAY, FixedTester.ACCEPT).accepts(node));
+		assertTrue(new AllItemsTester(ARRAY, FixedTester.ACCEPT).accepts(node));
 	}
 	
 	@Test
@@ -28,7 +42,7 @@ public class AllItemsTesterTest {
 		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
 		node.add(false);
 		node.add(true);
-		assertFalse(new AllItemsTester(JsonNodeType.ARRAY, FixedTester.REJECT).accepts(node));
+		assertFalse(new AllItemsTester(ARRAY, FixedTester.REJECT).accepts(node));
 	}
 	
 	@Test
@@ -36,7 +50,7 @@ public class AllItemsTesterTest {
 		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
 		node.add(false);
 		node.add(true);
-		assertFalse(new AllItemsTester(JsonNodeType.ARRAY, JsonNode::asBoolean).accepts(node));
+		assertFalse(new AllItemsTester(ARRAY, JsonNode::asBoolean).accepts(node));
 	}
 	
 	@Test
@@ -44,6 +58,6 @@ public class AllItemsTesterTest {
 		final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
 		node.add(true);
 		node.add(true);
-		assertTrue(new AllItemsTester(JsonNodeType.ARRAY, JsonNode::asBoolean).accepts(node));
+		assertTrue(new AllItemsTester(ARRAY, JsonNode::asBoolean).accepts(node));
 	}
 }