فهرست منبع

Update the rest of the tests to confirm the acceptable type.

Sam Jaffe 6 سال پیش
والد
کامیت
be305f9a20

+ 14 - 0
src/test/java/org/leumasjaffe/json/schema/tester/AnyOfTesterTest.java

@@ -1,5 +1,6 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
@@ -8,12 +9,25 @@ import org.leumasjaffe.json.schema.Tester;
 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;
 
 public class AnyOfTesterTest {
 	StubTester isArray = JsonNode::isArray;
 	StubTester isObject = JsonNode::isObject;
 	StubTester notEmpty = j -> j.size() != 0;
+	
+	@Test
+	public void testAcceptedTypesIsUnion() {
+		Tester impossible = new AnyOfTester(new MockTester(JsonNodeType.OBJECT, null),
+				new MockTester(JsonNodeType.ARRAY, null));
+		assertThat(impossible.acceptedTypes().length, is(2));
+		Tester resticted = new AnyOfTester(new MockTester(JsonNodeType.OBJECT, null),
+				isArray);
+		assertThat(resticted.acceptedTypes().length, is(Tester.ANY.length));
+		Tester free = new AnyOfTester(isObject,	isArray); // lol
+		assertThat(free.acceptedTypes().length, is(Tester.ANY.length));
+	}
 
 	@Test
 	public void testFailsIfAllFail() {

+ 12 - 0
src/test/java/org/leumasjaffe/json/schema/tester/FormatTesterTest.java

@@ -1,10 +1,12 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
 import org.leumasjaffe.json.schema.Tester;
 
+import com.fasterxml.jackson.databind.node.JsonNodeType;
 import com.fasterxml.jackson.databind.node.NullNode;
 import com.fasterxml.jackson.databind.node.TextNode;
 
@@ -18,6 +20,7 @@ public class FormatTesterTest {
 	@Test
 	public void testUUIDMatcher() {
 		Tester test = FormatTester.forCode("uuid");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("00000000-0000-0000-0000-000000000000")));
 		assertFalse(test.accepts(new TextNode("0000000-0000-0000-0000-000000000000")));
@@ -27,6 +30,7 @@ public class FormatTesterTest {
 	@Test
 	public void testDateTimeMatcher() {
 		Tester test = FormatTester.forCode("date-time");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("2000-01-01T21:10:10Z")));
 		assertTrue(test.accepts(new TextNode("2000-01-01T21:10:10+01:00")));
@@ -40,6 +44,7 @@ public class FormatTesterTest {
 	@Test
 	public void testEmailMatcher() {
 		Tester test = FormatTester.forCode("email");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("user@mail.com")));
 		assertFalse(test.accepts(new TextNode("user@mail")));
@@ -49,6 +54,7 @@ public class FormatTesterTest {
 	@Test
 	public void testHostnameMatcher() {
 		Tester test = FormatTester.forCode("hostname");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("google.com")));
 		assertFalse(test.accepts(new TextNode("192.168.0.1")));
@@ -59,6 +65,7 @@ public class FormatTesterTest {
 	@Test
 	public void testipv4Matcher() {
 		Tester test = FormatTester.forCode("ipv4");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("192.168.0.1")));
 		assertFalse(test.accepts(new TextNode("192.168.0.1/24")));
@@ -68,6 +75,7 @@ public class FormatTesterTest {
 	@Test
 	public void testipv6Matcher() {
 		Tester test = FormatTester.forCode("ipv6");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("::1")));
 		assertFalse(test.accepts(new TextNode("[::1]:80")));
@@ -77,6 +85,7 @@ public class FormatTesterTest {
 	@Test
 	public void testURIMatcher() {
 		Tester test = FormatTester.forCode("uri");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("file:///var/log/syslog")));
 		assertFalse(test.accepts(new TextNode("#/definitions/schemaArray")));
@@ -88,6 +97,7 @@ public class FormatTesterTest {
 	@Test
 	public void testURIReferenceMatcher() {
 		Tester test = FormatTester.forCode("uri-reference");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("file:///var/log/syslog")));
 		assertTrue(test.accepts(new TextNode("#/definitions/schemaArray")));
@@ -99,6 +109,7 @@ public class FormatTesterTest {
 	@Test
 	public void testURITemplateeMatcher() {
 		Tester test = FormatTester.forCode("uri-template");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("file:///var/log/syslog")));
 		assertTrue(test.accepts(new TextNode("#/definitions/schemaArray")));
@@ -110,6 +121,7 @@ public class FormatTesterTest {
 	@Test
 	public void testJsonPointerMatcher() {
 		Tester test = FormatTester.forCode("json-pointer");
+		assertThat(test.acceptedTypes(), is(new JsonNodeType[]{JsonNodeType.STRING}));
 		assertFalse(test.accepts(NullNode.getInstance()));
 		assertTrue(test.accepts(new TextNode("/definitions/schemaArray")));
 		assertFalse(test.accepts(new TextNode("#/definitions/schemaArray")));

+ 11 - 0
src/test/java/org/leumasjaffe/json/schema/tester/NotTesterTest.java

@@ -1,15 +1,26 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
+import org.leumasjaffe.json.schema.Tester;
 import org.leumasjaffe.json.schema.tester.NotTester;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.BooleanNode;
+import com.fasterxml.jackson.databind.node.JsonNodeType;
 import com.fasterxml.jackson.databind.node.NullNode;
 
 public class NotTesterTest {
+	@Test
+	public void testInheritsAcceptedTypes() {
+		StubTester stub = JsonNode::isNull;
+		assertThat(new NotTester(stub).acceptedTypes(), is(Tester.ANY));
+		MockTester mock = new MockTester(JsonNodeType.STRING, stub);
+		assertThat(new NotTester(mock).acceptedTypes(),
+				is(new JsonNodeType[]{JsonNodeType.STRING}));
+	}
 
 	@Test
 	public void testNotInvertsOutputTrue() {

+ 8 - 0
src/test/java/org/leumasjaffe/json/schema/tester/NumberTesterTest.java

@@ -1,5 +1,6 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import java.util.function.DoublePredicate;
@@ -7,11 +8,18 @@ import java.util.function.DoublePredicate;
 import org.junit.Test;
 
 import com.fasterxml.jackson.databind.node.DoubleNode;
+import com.fasterxml.jackson.databind.node.JsonNodeType;
 import com.fasterxml.jackson.databind.node.NullNode;
 
 public class NumberTesterTest {
 	DoublePredicate nonZero = d -> d != 0;
 	
+	@Test
+	public void testAcceptedTypeIsArgument() {
+		assertThat(new NumberTester(nonZero).acceptedTypes(),
+				is(new JsonNodeType[]{JsonNodeType.NUMBER}));
+	}
+	
 	@Test
 	public void testRejectsNonNumber() {
 		assertFalse(new NumberTester(nonZero).accepts(NullNode.getInstance()));

+ 14 - 0
src/test/java/org/leumasjaffe/json/schema/tester/OneOfTesterTest.java

@@ -1,5 +1,6 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
@@ -8,6 +9,7 @@ import org.leumasjaffe.json.schema.Tester;
 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;
 
 public class OneOfTesterTest {
@@ -15,6 +17,18 @@ public class OneOfTesterTest {
 	StubTester isObject = JsonNode::isObject;
 	StubTester notEmpty = j -> j.size() != 0;
 
+	@Test
+	public void testAcceptedTypesIsUnion() {
+		Tester impossible = new OneOfTester(new MockTester(JsonNodeType.OBJECT, null),
+				new MockTester(JsonNodeType.ARRAY, null));
+		assertThat(impossible.acceptedTypes().length, is(2));
+		Tester resticted = new OneOfTester(new MockTester(JsonNodeType.OBJECT, null),
+				isArray);
+		assertThat(resticted.acceptedTypes().length, is(Tester.ANY.length));
+		Tester free = new OneOfTester(isObject,	isArray); // lol
+		assertThat(free.acceptedTypes().length, is(Tester.ANY.length));
+	}
+	
 	@Test
 	public void testFailsIfAllFail() {
 		Tester fails = new OneOfTester(isArray, isObject);

+ 8 - 1
src/test/java/org/leumasjaffe/json/schema/tester/PropertyNameTesterTest.java

@@ -1,15 +1,22 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
 
 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 PropertyNameTesterTest {
-
+	@Test
+	public void testAcceptedTypeIsObject() {
+		assertThat(new PropertyNameTester(FixedTester.REJECT).acceptedTypes(),
+				is(new JsonNodeType[]{JsonNodeType.OBJECT}));
+	}
+	
 	@Test
 	public void testPassesEmptyObject() {
 		PropertyNameTester test = new PropertyNameTester(FixedTester.REJECT);

+ 7 - 0
src/test/java/org/leumasjaffe/json/schema/tester/PropertyTesterTest.java

@@ -1,15 +1,22 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
 import org.leumasjaffe.json.schema.tester.PropertyTester.Pair;
 
 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 PropertyTesterTest {
+	@Test
+	public void testAcceptedTypeIsObject() {
+		assertThat(new PropertyTester(new Pair[0]).acceptedTypes(),
+				is(new JsonNodeType[]{JsonNodeType.OBJECT}));
+	}
 
 	@Test
 	public void testPassesUnmatchedProperty() {

+ 12 - 0
src/test/java/org/leumasjaffe/json/schema/tester/SizeTesterTest.java

@@ -1,5 +1,6 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import java.util.function.IntPredicate;
@@ -14,6 +15,7 @@ import org.leumasjaffe.json.schema.tester.SizeTester;
 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;
 import com.fasterxml.jackson.databind.node.TextNode;
@@ -21,6 +23,16 @@ import com.fasterxml.jackson.databind.node.TextNode;
 public class SizeTesterTest {
 	static IntPredicate NON_ZERO = i -> i > 0;
 
+	@Test
+	public void testAcceptedTypeIsArgument() {
+		assertThat(new SizeTester(ARRAY, NON_ZERO).acceptedTypes(),
+				is(new JsonNodeType[]{ARRAY}));
+		assertThat(new SizeTester(OBJECT, NON_ZERO).acceptedTypes(),
+				is(new JsonNodeType[]{OBJECT}));
+		assertThat(new SizeTester(STRING, NON_ZERO).acceptedTypes(),
+				is(new JsonNodeType[]{STRING}));
+	}
+
 	@Test
 	public void arrayMatcherRejectsObject() {
 		final SizeTester notEmptyArray = new SizeTester(ARRAY, NON_ZERO);

+ 8 - 0
src/test/java/org/leumasjaffe/json/schema/tester/TypeTesterTest.java

@@ -1,5 +1,6 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
@@ -33,6 +34,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatcheNullNode() {
 		final Tester t = TypeTester.fromType("null");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertTrue(t.accepts(jNull));
 		assertFalse(t.accepts(bool));
 		assertFalse(t.accepts(integral));
@@ -45,6 +47,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatchesBooleanNode() {
 		final Tester t = TypeTester.fromType("boolean");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertFalse(t.accepts(jNull));
 		assertTrue(t.accepts(bool));
 		assertFalse(t.accepts(integral));
@@ -57,6 +60,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatchesIntegerNode() {
 		final Tester t = TypeTester.fromType("integer");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertFalse(t.accepts(jNull));
 		assertFalse(t.accepts(bool));
 		assertTrue(t.accepts(integral));
@@ -69,6 +73,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatchesDoubleNode() {
 		final Tester t = TypeTester.fromType("number");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertFalse(t.accepts(jNull));
 		assertFalse(t.accepts(bool));
 		assertTrue(t.accepts(integral));
@@ -81,6 +86,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatchesTextNode() {
 		final Tester t = TypeTester.fromType("string");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertFalse(t.accepts(jNull));
 		assertFalse(t.accepts(bool));
 		assertFalse(t.accepts(integral));
@@ -93,6 +99,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatchesArrayNode() {
 		final Tester t = TypeTester.fromType("array");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertFalse(t.accepts(jNull));
 		assertFalse(t.accepts(bool));
 		assertFalse(t.accepts(integral));
@@ -105,6 +112,7 @@ public class TypeTesterTest {
 	@Test
 	public void testMatchesObjectNode() {
 		final Tester t = TypeTester.fromType("object");
+		assertThat(t.acceptedTypes(), is(Tester.ANY));
 		assertFalse(t.accepts(jNull));
 		assertFalse(t.accepts(bool));
 		assertFalse(t.accepts(integral));

+ 8 - 0
src/test/java/org/leumasjaffe/json/schema/tester/UniqueItemTesterTest.java

@@ -1,14 +1,22 @@
 package org.leumasjaffe.json.schema.tester;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 import org.junit.Test;
 
 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.ObjectNode;
 
 public class UniqueItemTesterTest {
+	
+	@Test
+	public void testAcceptedTypeIsArray() {
+		assertThat(new UniqueItemTester().acceptedTypes(),
+				is(new JsonNodeType[]{JsonNodeType.ARRAY}));
+	}
 
 	@Test
 	public void testAcceptsEmptyArray() {