|
|
@@ -0,0 +1,47 @@
|
|
|
+package org.leumasjaffe.json.schema.matcher;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+import org.hamcrest.BaseMatcher;
|
|
|
+import org.hamcrest.Description;
|
|
|
+import org.hamcrest.Matcher;
|
|
|
+import org.leumasjaffe.json.schema.Tester;
|
|
|
+
|
|
|
+import com.fasterxml.jackson.databind.node.JsonNodeType;
|
|
|
+
|
|
|
+public class AcceptedTypes extends BaseMatcher<Tester> {
|
|
|
+ public static Matcher<Tester> acceptsTypes(JsonNodeType...types) {
|
|
|
+ return new AcceptedTypes(types);
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<JsonNodeType> typesAccepted;
|
|
|
+
|
|
|
+ private AcceptedTypes(JsonNodeType...types) {
|
|
|
+ typesAccepted = new HashSet<>(Arrays.asList(types));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean matches(Object arg0) {
|
|
|
+ if (!(arg0 instanceof Tester)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return actualTypes((Tester) arg0).equals(typesAccepted);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Set<JsonNodeType> actualTypes(Tester arg0) {
|
|
|
+ return new HashSet<>(Arrays.asList(arg0.acceptedTypes()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void describeTo(Description arg0) {
|
|
|
+ arg0.appendText("accepts types ").appendValue(typesAccepted);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void describeMismatch(Object arg0, Description arg1) {
|
|
|
+ arg1.appendText("instead accepts ").appendValue(actualTypes((Tester) arg0));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|