|
|
@@ -0,0 +1,120 @@
|
|
|
+package org.leumasjaffe.json.tester;
|
|
|
+
|
|
|
+import static org.junit.Assert.*;
|
|
|
+
|
|
|
+import org.junit.Test;
|
|
|
+import org.leumasjaffe.json.schema.Tester;
|
|
|
+import org.leumasjaffe.json.schema.tester.TypeTester;
|
|
|
+
|
|
|
+import com.fasterxml.jackson.databind.JsonNode;
|
|
|
+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;
|
|
|
+import com.fasterxml.jackson.databind.node.TextNode;
|
|
|
+
|
|
|
+import lombok.AccessLevel;
|
|
|
+import lombok.experimental.FieldDefaults;
|
|
|
+
|
|
|
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
+public class TypeTesterTest {
|
|
|
+ JsonNode jNull = NullNode.getInstance();
|
|
|
+ JsonNode bool = BooleanNode.TRUE;
|
|
|
+ JsonNode integral = new IntNode(5);
|
|
|
+ JsonNode floating = new DoubleNode(1.5);
|
|
|
+ JsonNode text = new TextNode("hello");
|
|
|
+ JsonNode array = new ArrayNode(JsonNodeFactory.instance);
|
|
|
+ JsonNode object = new ObjectNode(JsonNodeFactory.instance);
|
|
|
+
|
|
|
+ @Test(expected=IllegalArgumentException.class)
|
|
|
+ public void testRejectsCustomType() {
|
|
|
+ TypeTester.fromType("blob");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatcheNullNode() {
|
|
|
+ final Tester t = TypeTester.fromType("null");
|
|
|
+ assertTrue(t.accepts(jNull));
|
|
|
+ assertFalse(t.accepts(bool));
|
|
|
+ assertFalse(t.accepts(integral));
|
|
|
+ assertFalse(t.accepts(floating));
|
|
|
+ assertFalse(t.accepts(text));
|
|
|
+ assertFalse(t.accepts(array));
|
|
|
+ assertFalse(t.accepts(object));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatchesBooleanNode() {
|
|
|
+ final Tester t = TypeTester.fromType("boolean");
|
|
|
+ assertFalse(t.accepts(jNull));
|
|
|
+ assertTrue(t.accepts(bool));
|
|
|
+ assertFalse(t.accepts(integral));
|
|
|
+ assertFalse(t.accepts(floating));
|
|
|
+ assertFalse(t.accepts(text));
|
|
|
+ assertFalse(t.accepts(array));
|
|
|
+ assertFalse(t.accepts(object));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatchesIntegerNode() {
|
|
|
+ final Tester t = TypeTester.fromType("integer");
|
|
|
+ assertFalse(t.accepts(jNull));
|
|
|
+ assertFalse(t.accepts(bool));
|
|
|
+ assertTrue(t.accepts(integral));
|
|
|
+ assertFalse(t.accepts(floating));
|
|
|
+ assertFalse(t.accepts(text));
|
|
|
+ assertFalse(t.accepts(array));
|
|
|
+ assertFalse(t.accepts(object));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatchesDoubleNode() {
|
|
|
+ final Tester t = TypeTester.fromType("number");
|
|
|
+ assertFalse(t.accepts(jNull));
|
|
|
+ assertFalse(t.accepts(bool));
|
|
|
+ assertTrue(t.accepts(integral));
|
|
|
+ assertTrue(t.accepts(floating));
|
|
|
+ assertFalse(t.accepts(text));
|
|
|
+ assertFalse(t.accepts(array));
|
|
|
+ assertFalse(t.accepts(object));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatchesTextNode() {
|
|
|
+ final Tester t = TypeTester.fromType("string");
|
|
|
+ assertFalse(t.accepts(jNull));
|
|
|
+ assertFalse(t.accepts(bool));
|
|
|
+ assertFalse(t.accepts(integral));
|
|
|
+ assertFalse(t.accepts(floating));
|
|
|
+ assertTrue(t.accepts(text));
|
|
|
+ assertFalse(t.accepts(array));
|
|
|
+ assertFalse(t.accepts(object));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatchesArrayNode() {
|
|
|
+ final Tester t = TypeTester.fromType("array");
|
|
|
+ assertFalse(t.accepts(jNull));
|
|
|
+ assertFalse(t.accepts(bool));
|
|
|
+ assertFalse(t.accepts(integral));
|
|
|
+ assertFalse(t.accepts(floating));
|
|
|
+ assertFalse(t.accepts(text));
|
|
|
+ assertTrue(t.accepts(array));
|
|
|
+ assertFalse(t.accepts(object));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMatchesObjectNode() {
|
|
|
+ final Tester t = TypeTester.fromType("object");
|
|
|
+ assertFalse(t.accepts(jNull));
|
|
|
+ assertFalse(t.accepts(bool));
|
|
|
+ assertFalse(t.accepts(integral));
|
|
|
+ assertFalse(t.accepts(floating));
|
|
|
+ assertFalse(t.accepts(text));
|
|
|
+ assertFalse(t.accepts(array));
|
|
|
+ assertTrue(t.accepts(object));
|
|
|
+ }
|
|
|
+}
|