|
@@ -0,0 +1,46 @@
|
|
|
|
|
+package org.leumasjaffe.json.schema.tester;
|
|
|
|
|
+
|
|
|
|
|
+import static org.junit.Assert.*;
|
|
|
|
|
+
|
|
|
|
|
+import org.junit.Test;
|
|
|
|
|
+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.NullNode;
|
|
|
|
|
+
|
|
|
|
|
+public class OneOfTesterTest {
|
|
|
|
|
+ Tester isArray = JsonNode::isArray;
|
|
|
|
|
+ Tester isObject = JsonNode::isObject;
|
|
|
|
|
+ Tester notEmpty = j -> j.size() != 0;
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfAllFail() {
|
|
|
|
|
+ Tester fails = new OneOfTester(isArray, isObject);
|
|
|
|
|
+ assertFalse(fails.accepts(NullNode.getInstance()));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfAllPass() {
|
|
|
|
|
+ Tester fails = new OneOfTester(isArray, notEmpty);
|
|
|
|
|
+ final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.add(true);
|
|
|
|
|
+ assertFalse(fails.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfMoreThanOnePass() {
|
|
|
|
|
+ Tester fails = new OneOfTester(isArray, isObject, notEmpty);
|
|
|
|
|
+ final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
|
|
|
|
|
+ node.add(true);
|
|
|
|
|
+ assertFalse(fails.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testFailsIfPreciselyOnePasses() {
|
|
|
|
|
+ Tester fails = new OneOfTester(isArray, notEmpty);
|
|
|
|
|
+ final ArrayNode node = new ArrayNode(JsonNodeFactory.instance);
|
|
|
|
|
+ assertTrue(fails.accepts(node));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|