|
@@ -0,0 +1,78 @@
|
|
|
|
|
+package org.leumasjaffe.json.schema.tester;
|
|
|
|
|
+
|
|
|
|
|
+import static org.junit.Assert.*;
|
|
|
|
|
+
|
|
|
|
|
+import org.junit.Test;
|
|
|
|
|
+import org.leumasjaffe.json.schema.Tester;
|
|
|
|
|
+import org.leumasjaffe.json.schema.tester.PropertyTester.Pair;
|
|
|
|
|
+
|
|
|
|
|
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
|
|
|
+import com.fasterxml.jackson.databind.node.NullNode;
|
|
|
|
|
+import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
|
|
+
|
|
|
|
|
+public class PropertyTesterTest {
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testPassesUnmatchedProperty() {
|
|
|
|
|
+ PropertyTester test = new PropertyTester(new Pair[0]);
|
|
|
|
|
+ final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.set("A", NullNode.getInstance());
|
|
|
|
|
+ assertTrue(test.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfMatchFails() {
|
|
|
|
|
+ PropertyTester test = new PropertyTester(new Pair(s -> s.equals("A"), Tester.REJECT));
|
|
|
|
|
+ final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.set("A", NullNode.getInstance());
|
|
|
|
|
+ assertFalse(test.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfAnyMatchFails() {
|
|
|
|
|
+ PropertyTester test = new PropertyTester(
|
|
|
|
|
+ new Pair(s -> s.equals("A"), Tester.ACCEPT),
|
|
|
|
|
+ new Pair(s -> s.equals("B"), Tester.REJECT)
|
|
|
|
|
+ );
|
|
|
|
|
+ final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.set("A", NullNode.getInstance());
|
|
|
|
|
+ node.set("B", NullNode.getInstance());
|
|
|
|
|
+ assertFalse(test.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfMoreThanOneMatcherForKey() {
|
|
|
|
|
+ PropertyTester test = new PropertyTester(
|
|
|
|
|
+ new Pair(s -> s.equals("A"), Tester.ACCEPT),
|
|
|
|
|
+ new Pair(s -> s.equals("A"), Tester.REJECT)
|
|
|
|
|
+ );
|
|
|
|
|
+ final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.set("A", NullNode.getInstance());
|
|
|
|
|
+ node.set("B", NullNode.getInstance());
|
|
|
|
|
+ assertFalse(test.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testPassesIfAllPass() {
|
|
|
|
|
+ PropertyTester test = new PropertyTester(
|
|
|
|
|
+ new Pair(s -> s.equals("A"), Tester.ACCEPT),
|
|
|
|
|
+ new Pair(s -> s.equals("B"), Tester.ACCEPT)
|
|
|
|
|
+ );
|
|
|
|
|
+ final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.set("A", NullNode.getInstance());
|
|
|
|
|
+ node.set("B", NullNode.getInstance());
|
|
|
|
|
+ assertTrue(test.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testPairMatcherCanOperateOnMultipleKeys() {
|
|
|
|
|
+ PropertyTester test = new PropertyTester(
|
|
|
|
|
+ new Pair(s -> s.length() == 1, Tester.ACCEPT),
|
|
|
|
|
+ new Pair(s -> s.equals("B"), Tester.ACCEPT)
|
|
|
|
|
+ );
|
|
|
|
|
+ final ObjectNode node = new ObjectNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.set("A", NullNode.getInstance());
|
|
|
|
|
+ node.set("B", NullNode.getInstance());
|
|
|
|
|
+ assertFalse(test.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|