Jelajahi Sumber

Add enum/const tests

Sam Jaffe 6 tahun lalu
induk
melakukan
d2070738bc

+ 1 - 1
src/main/lombok/org/leumasjaffe/json/schema/factory/SchemaV6Factory.java

@@ -71,7 +71,7 @@ class SchemaV6Factory extends SchemaFactory {
 		// case "dependencies": ; // TODO Implement array(required) and object(schema) versions
 		case "propertyNames": return new PropertyNameTester(create(value));
 		case "const": return value::equals;
-		case "enum": new AnyOfTester(JsonHelper.toArray(value, v -> (Tester) v::equals));
+		case "enum": return new AnyOfTester(JsonHelper.toArray(value, v -> (Tester) v::equals));
 		case "type": return TypeTester.fromType(value.asText());
 		case "format": return FormatTester.forCode(value.asText());
 		case "allOf": return new AllOfTester(createArray(value));

+ 19 - 0
src/test/java/org/leumasjaffe/json/schema/factory/SchemaV6FactoryTest.java

@@ -18,6 +18,7 @@ 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;
 
 public class SchemaV6FactoryTest {
 	SchemaV6Factory factory;
@@ -193,4 +194,22 @@ public class SchemaV6FactoryTest {
 		node.set("B", BooleanNode.FALSE);
 		assertTrue(test.accepts(node));
 	}
+	
+	@Test
+	public void testConstSchema() {
+		Tester test = fromSingleElement("{ \"const\": { \"nice\": \"meme\" } }");
+		JsonNode matching = readTree("{ \"nice\": \"meme\" }");
+		assertTrue(test.accepts(matching));
+	}
+	
+	@Test
+	public void testEnumSchema() {
+		Tester test = fromSingleElement("{ \"enum\": [ \"A\", \"B\", \"D\" ] }");
+		assertTrue(test.accepts(new TextNode("A")));
+		assertFalse(test.accepts(new TextNode("a")));
+		assertTrue(test.accepts(new TextNode("B")));
+		assertFalse(test.accepts(new TextNode("AB")));
+		assertFalse(test.accepts(new TextNode("C")));
+		assertTrue(test.accepts(new TextNode("D")));
+	}
 }