|
|
@@ -1,8 +1,10 @@
|
|
|
package org.leumasjaffe.json.schema;
|
|
|
|
|
|
import static com.fasterxml.jackson.databind.node.JsonNodeType.*;
|
|
|
-import static org.hamcrest.core.Is.is;
|
|
|
-import static org.junit.Assert.*;
|
|
|
+import static org.junit.Assert.assertThat;
|
|
|
+import static org.leumasjaffe.json.schema.matcher.Accepts.accepts;
|
|
|
+import static org.leumasjaffe.json.schema.matcher.AcceptedTypes.acceptsTypes;
|
|
|
+import static org.leumasjaffe.json.schema.matcher.Not.not;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
@@ -88,35 +90,36 @@ public class SchemaTest {
|
|
|
|
|
|
@Test
|
|
|
public void testAcceptsAnyIfNoMatchers() {
|
|
|
- assertThat(new Schema().acceptedTypes().length, is(Tester.ANY.length));
|
|
|
+ assertThat(new Schema(), acceptsTypes(Tester.ANY));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testRejectsWrongType() {
|
|
|
Map<String, Tester> tests = new HashMap<>();
|
|
|
tests.put("example", new MockTester(STRING, FixedTester.ACCEPT));
|
|
|
- assertFalse(new Schema(tests).accepts(NullNode.getInstance()));
|
|
|
+ assertThat(new Schema(tests), not(accepts(NullNode.getInstance())));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testHandlesUniversalChecksForBoolean() {
|
|
|
- assertTrue(getConstSchema(BooleanNode.TRUE).accepts(BooleanNode.TRUE));
|
|
|
- assertFalse(getConstSchema(BooleanNode.TRUE).accepts(NullNode.getInstance()));
|
|
|
- assertTrue(getEnumSchema(BooleanNode.TRUE, BooleanNode.FALSE)
|
|
|
- .accepts(BooleanNode.TRUE));
|
|
|
- assertTrue(getEnumSchema(BooleanNode.TRUE, BooleanNode.FALSE)
|
|
|
- .accepts(BooleanNode.FALSE));
|
|
|
- assertFalse(getEnumSchema(BooleanNode.TRUE, BooleanNode.FALSE)
|
|
|
- .accepts(NullNode.getInstance()));
|
|
|
+ assertThat(getConstSchema(BooleanNode.TRUE), accepts(BooleanNode.TRUE));
|
|
|
+ assertThat(getConstSchema(BooleanNode.TRUE),
|
|
|
+ not(accepts(NullNode.getInstance())));
|
|
|
+ assertThat(getEnumSchema(BooleanNode.TRUE, BooleanNode.FALSE),
|
|
|
+ accepts(BooleanNode.TRUE));
|
|
|
+ assertThat(getEnumSchema(BooleanNode.TRUE, BooleanNode.FALSE),
|
|
|
+ accepts(BooleanNode.FALSE));
|
|
|
+ assertThat(getEnumSchema(BooleanNode.TRUE, BooleanNode.FALSE),
|
|
|
+ not(accepts(NullNode.getInstance())));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testHandlesMultipleTestsForNumber() {
|
|
|
- assertFalse(getNumberSchema().accepts(new DoubleNode(-0.25)));
|
|
|
- assertTrue(getNumberSchema().accepts(new DoubleNode(0.0)));
|
|
|
- assertTrue(getNumberSchema().accepts(new DoubleNode(0.5)));
|
|
|
- assertFalse(getNumberSchema().accepts(new DoubleNode(0.6)));
|
|
|
- assertFalse(getNumberSchema().accepts(new DoubleNode(1.0)));
|
|
|
+ assertThat(getNumberSchema(), not(accepts(new DoubleNode(-0.25))));
|
|
|
+ assertThat(getNumberSchema(), accepts(new DoubleNode(0.0)));
|
|
|
+ assertThat(getNumberSchema(), accepts(new DoubleNode(0.5)));
|
|
|
+ assertThat(getNumberSchema(), not(accepts(new DoubleNode(0.6))));
|
|
|
+ assertThat(getNumberSchema(), not(accepts(new DoubleNode(1.0))));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -135,50 +138,50 @@ public class SchemaTest {
|
|
|
|
|
|
@Test
|
|
|
public void testHandlesUniversalChecksForNumber() {
|
|
|
- assertTrue(getConstSchema(new DoubleNode(0.0)).accepts(new DoubleNode(0.0)));
|
|
|
- assertFalse(getConstSchema(new DoubleNode(0.0)).accepts(new DoubleNode(0.5)));
|
|
|
- assertTrue(getEnumSchema(new DoubleNode(0.0), new DoubleNode(1.0))
|
|
|
- .accepts(new DoubleNode(0.0)));
|
|
|
- assertTrue(getEnumSchema(new DoubleNode(0.0), new DoubleNode(1.0))
|
|
|
- .accepts(new DoubleNode(1.0)));
|
|
|
- assertFalse(getEnumSchema(new DoubleNode(0.0), new DoubleNode(1.0))
|
|
|
- .accepts(new DoubleNode(0.5)));
|
|
|
+ assertThat(getConstSchema(new DoubleNode(0.0)), accepts(new DoubleNode(0.0)));
|
|
|
+ assertThat(getConstSchema(new DoubleNode(0.0)), not(accepts(new DoubleNode(0.5))));
|
|
|
+ assertThat(getEnumSchema(new DoubleNode(0.0), new DoubleNode(1.0)),
|
|
|
+ accepts(new DoubleNode(0.0)));
|
|
|
+ assertThat(getEnumSchema(new DoubleNode(0.0), new DoubleNode(1.0)),
|
|
|
+ accepts(new DoubleNode(1.0)));
|
|
|
+ assertThat(getEnumSchema(new DoubleNode(0.0), new DoubleNode(1.0)),
|
|
|
+ not(accepts(new DoubleNode(0.5))));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testHandlesMultipleTestsForString() {
|
|
|
- assertFalse(getStringSchema().accepts(new TextNode("https://a")));
|
|
|
- assertTrue(getStringSchema().accepts(new TextNode("https://google.com")));
|
|
|
- assertFalse(getStringSchema().accepts(new TextNode("http://google.com")));
|
|
|
- assertFalse(getStringSchema().accepts(new TextNode("https://google.com/query?q=Hippopotomonstrosesquippedaliophobia")));
|
|
|
+ assertThat(getStringSchema(), not(accepts(new TextNode("https://a"))));
|
|
|
+ assertThat(getStringSchema(), accepts(new TextNode("https://google.com")));
|
|
|
+ assertThat(getStringSchema(), not(accepts(new TextNode("http://google.com"))));
|
|
|
+ assertThat(getStringSchema(), not(accepts(new TextNode("https://google.com/query?q=Hippopotomonstrosesquippedaliophobia"))));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testHandlesUniversalChecksForString() {
|
|
|
- assertTrue(getConstSchema(new TextNode("A")).accepts(new TextNode("A")));
|
|
|
- assertFalse(getConstSchema(new TextNode("A")).accepts(new TextNode("C")));
|
|
|
- assertTrue(getEnumSchema(new TextNode("A"), new TextNode("B"))
|
|
|
- .accepts(new TextNode("A")));
|
|
|
- assertTrue(getEnumSchema(new TextNode("A"), new TextNode("B"))
|
|
|
- .accepts(new TextNode("B")));
|
|
|
- assertFalse(getEnumSchema(new TextNode("A"), new TextNode("B"))
|
|
|
- .accepts(new TextNode("C")));
|
|
|
+ assertThat(getConstSchema(new TextNode("A")), accepts(new TextNode("A")));
|
|
|
+ assertThat(getConstSchema(new TextNode("A")), not(accepts(new TextNode("C"))));
|
|
|
+ assertThat(getEnumSchema(new TextNode("A"), new TextNode("B")),
|
|
|
+ accepts(new TextNode("A")));
|
|
|
+ assertThat(getEnumSchema(new TextNode("A"), new TextNode("B")),
|
|
|
+ accepts(new TextNode("B")));
|
|
|
+ assertThat(getEnumSchema(new TextNode("A"), new TextNode("B")),
|
|
|
+ not(accepts(new TextNode("C"))));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void testHandlesMultipleTestsForArray() {
|
|
|
final ArrayNode array = new ArrayNode(JsonNodeFactory.instance);
|
|
|
- assertFalse(getArraySchema().accepts(array));
|
|
|
+ assertThat(getArraySchema(), not(accepts(array)));
|
|
|
array.add("Test");
|
|
|
- assertFalse(getArraySchema().accepts(array));
|
|
|
+ assertThat(getArraySchema(), not(accepts(array)));
|
|
|
array.add(0.5);
|
|
|
- assertTrue(getArraySchema().accepts(array));
|
|
|
+ assertThat(getArraySchema(), accepts(array));
|
|
|
array.add(0.5);
|
|
|
- assertFalse(getArraySchema().accepts(array));
|
|
|
+ assertThat(getArraySchema(), not(accepts(array)));
|
|
|
array.remove(2);
|
|
|
array.add(true);
|
|
|
array.add(false);
|
|
|
- assertFalse(getArraySchema().accepts(array));
|
|
|
+ assertThat(getArraySchema(), not(accepts(array)));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -196,10 +199,10 @@ public class SchemaTest {
|
|
|
assertThat(schema, not(accepts(node)));
|
|
|
|
|
|
tests.put("additionalItems", FixedTester.ACCEPT);
|
|
|
- assertTrue(new Schema(tests).accepts(node));
|
|
|
+ assertThat(new Schema(tests), accepts(node));
|
|
|
|
|
|
tests.remove("additionalItems");
|
|
|
- assertTrue(new Schema(tests).accepts(node));
|
|
|
+ assertThat(new Schema(tests), accepts(node));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -235,18 +238,18 @@ public class SchemaTest {
|
|
|
@Test
|
|
|
public void testHandlesMultipleTestsForObject() {
|
|
|
final ObjectNode object = new ObjectNode(JsonNodeFactory.instance);
|
|
|
- assertFalse(getObjectSchema().accepts(object));
|
|
|
+ assertThat(getObjectSchema(), not(accepts(object)));
|
|
|
object.set("string", new TextNode("https://google.com"));
|
|
|
- assertFalse(getObjectSchema().accepts(object));
|
|
|
+ assertThat(getObjectSchema(), not(accepts(object)));
|
|
|
object.set("float", new DoubleNode(0.5));
|
|
|
- assertTrue(getObjectSchema().accepts(object));
|
|
|
+ assertThat(getObjectSchema(), accepts(object));
|
|
|
object.set("Caps", BooleanNode.TRUE);
|
|
|
- assertFalse(getObjectSchema().accepts(object));
|
|
|
+ assertThat(getObjectSchema(), not(accepts(object)));
|
|
|
object.remove("Caps");
|
|
|
object.set("bool", BooleanNode.TRUE);
|
|
|
- assertTrue(getObjectSchema().accepts(object));
|
|
|
+ assertThat(getObjectSchema(), accepts(object));
|
|
|
object.set("null", NullNode.getInstance());
|
|
|
- assertFalse(getObjectSchema().accepts(object));
|
|
|
+ assertThat(getObjectSchema(), not(accepts(object)));
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -266,10 +269,10 @@ public class SchemaTest {
|
|
|
assertThat(schema, not(accepts(node)));
|
|
|
|
|
|
tests.put("additionalProperties", FixedTester.ACCEPT);
|
|
|
- assertTrue(new Schema(tests).accepts(node));
|
|
|
+ assertThat(new Schema(tests), accepts(node));
|
|
|
|
|
|
tests.remove("additionalProperties");
|
|
|
- assertTrue(new Schema(tests).accepts(node));
|
|
|
+ assertThat(new Schema(tests), accepts(node));
|
|
|
}
|
|
|
|
|
|
@Test
|