فهرست منبع

Do some cleanup, add tests for number bounds.

Sam Jaffe 6 سال پیش
والد
کامیت
2e18d2ebad
1فایلهای تغییر یافته به همراه70 افزوده شده و 13 حذف شده
  1. 70 13
      src/test/java/org/leumasjaffe/json/schema/factory/SchemaV6FactoryTest.java

+ 70 - 13
src/test/java/org/leumasjaffe/json/schema/factory/SchemaV6FactoryTest.java

@@ -3,6 +3,7 @@ package org.leumasjaffe.json.schema.factory;
 import static org.junit.Assert.*;
 
 import java.io.IOException;
+import java.util.Map;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -10,6 +11,8 @@ import org.leumasjaffe.json.schema.Tester;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.DoubleNode;
+import com.fasterxml.jackson.databind.node.IntNode;
 import com.fasterxml.jackson.databind.node.NullNode;
 
 public class SchemaV6FactoryTest {
@@ -22,53 +25,107 @@ public class SchemaV6FactoryTest {
 		mapper = new ObjectMapper();
 	}
 	
-	public JsonNode readTree(String data) {
+	private JsonNode readTree(String data) {
 		try {
 			return mapper.readTree(data);
 		} catch (IOException e) {
 			throw new RuntimeException(e);
 		}
 	}
+	
+	private Tester fromSingleElement(String data) {
+		final JsonNode schema = readTree(data);
+		final Map.Entry<String, JsonNode> pair = schema.fields().next();
+		return factory.createMapping(pair.getKey(), pair.getValue());
+	}
 
 	@Test
 	public void testIDSchema() {
-		final JsonNode schema = readTree("{ \"$id\": \"test.json\" }");
-		Tester test = factory.createMapping("$id", schema.get("$id"));
+		Tester test = fromSingleElement("{ \"$id\": \"test.json\" }");
 		assertTrue(test.accepts(NullNode.getInstance()));
 	}
 	
 	@Test
 	public void testSchemaSchema() {
-		final JsonNode schema = readTree("{ \"$schema\": \"http://json-schema.org/draft-06/schema#\" }");
-		Tester test = factory.createMapping("$schema", schema.get("$schema"));
+		Tester test = fromSingleElement("{ \"$schema\": \"http://json-schema.org/draft-06/schema#\" }");
 		assertTrue(test.accepts(NullNode.getInstance()));
 	}
 	
 	@Test
 	public void testTitleSchema() {
-		final JsonNode schema = readTree("{ \"title\": \"This is a schema\" }");
-		Tester test = factory.createMapping("title", schema.get("title"));
+		Tester test = fromSingleElement("{ \"title\": \"This is a schema\" }");
 		assertTrue(test.accepts(NullNode.getInstance()));
 	}
 	
 	@Test
 	public void testDescriptionSchema() {
-		final JsonNode schema = readTree("{ \"description\": \"This is a schema\" }");
-		Tester test = factory.createMapping("description", schema.get("description"));
+		Tester test = fromSingleElement("{ \"description\": \"This is a schema\" }");
 		assertTrue(test.accepts(NullNode.getInstance()));
 	}
 	
 	@Test
 	public void testDefaultSchema() {
-		final JsonNode schema = readTree("{ \"default\": {} }");
-		Tester test = factory.createMapping("default", schema.get("default"));
+		Tester test = fromSingleElement("{ \"default\": {} }");
 		assertTrue(test.accepts(NullNode.getInstance()));
 	}
 
 	@Test
 	public void testExamplesSchema() {
-		final JsonNode schema = readTree("{ \"examples\": [] }");
-		Tester test = factory.createMapping("examples", schema.get("examples"));
+		Tester test = fromSingleElement("{ \"examples\": [] }");
 		assertTrue(test.accepts(NullNode.getInstance()));
 	}
+	
+	@Test
+	public void testMultipleOfSchema() {
+		Tester test = fromSingleElement("{ \"multipleOf\": 1.5 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertTrue(test.accepts(new DoubleNode(1.5)));
+		assertTrue(test.accepts(new DoubleNode(3.0)));
+		assertTrue(test.accepts(new IntNode(3)));
+		assertFalse(test.accepts(new DoubleNode(2.5)));
+	}
+	
+	@Test
+	public void testMaximumSchema() {
+		Tester test = fromSingleElement("{ \"maximum\": 2.5 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertTrue(test.accepts(new DoubleNode(1.5)));
+		assertFalse(test.accepts(new DoubleNode(3.0)));
+		assertTrue(test.accepts(new IntNode(2)));
+		assertFalse(test.accepts(new IntNode(3)));
+		assertTrue(test.accepts(new DoubleNode(2.5)));
+	}
+	
+	@Test
+	public void testExclusiveMaximumSchema() {
+		Tester test = fromSingleElement("{ \"exclusiveMaximum\": 2.5 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertTrue(test.accepts(new DoubleNode(1.5)));
+		assertFalse(test.accepts(new DoubleNode(3.0)));
+		assertTrue(test.accepts(new IntNode(2)));
+		assertFalse(test.accepts(new IntNode(3)));
+		assertFalse(test.accepts(new DoubleNode(2.5)));
+	}
+	
+	@Test
+	public void testMinimumSchema() {
+		Tester test = fromSingleElement("{ \"minimum\": 2.5 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertFalse(test.accepts(new DoubleNode(1.5)));
+		assertTrue(test.accepts(new DoubleNode(3.0)));
+		assertFalse(test.accepts(new IntNode(2)));
+		assertTrue(test.accepts(new IntNode(3)));
+		assertTrue(test.accepts(new DoubleNode(2.5)));
+	}
+	
+	@Test
+	public void testExclusiveMinimumSchema() {
+		Tester test = fromSingleElement("{ \"exclusiveMinimum\": 2.5 }");
+		assertFalse(test.accepts(NullNode.getInstance()));
+		assertFalse(test.accepts(new DoubleNode(1.5)));
+		assertTrue(test.accepts(new DoubleNode(3.0)));
+		assertFalse(test.accepts(new IntNode(2)));
+		assertTrue(test.accepts(new IntNode(3)));
+		assertFalse(test.accepts(new DoubleNode(2.5)));
+	}
 }