From abbcc3915fa783c648436ef52e15da923a246dd1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 26 Mar 2016 09:27:45 +0000 Subject: Lazily combine warnings in results --- .../org/zwobble/mammoth/tests/ResultMatchers.java | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'src/test/java/org/zwobble/mammoth/tests/ResultMatchers.java') diff --git a/src/test/java/org/zwobble/mammoth/tests/ResultMatchers.java b/src/test/java/org/zwobble/mammoth/tests/ResultMatchers.java index a5b9585..c66fbff 100644 --- a/src/test/java/org/zwobble/mammoth/tests/ResultMatchers.java +++ b/src/test/java/org/zwobble/mammoth/tests/ResultMatchers.java @@ -1,21 +1,49 @@ package org.zwobble.mammoth.tests; -import com.google.common.collect.ImmutableSet; +import org.hamcrest.FeatureMatcher; import org.hamcrest.Matcher; import org.hamcrest.Matchers; import org.zwobble.mammoth.Result; +import org.zwobble.mammoth.internal.results.InternalResult; -import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.Matchers.*; +import static org.zwobble.mammoth.internal.util.MammothLists.eagerMap; +import static org.zwobble.mammoth.internal.util.MammothLists.list; import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals; public class ResultMatchers { + public static Matcher> isInternalSuccess(Object value) { + return isInternalResult(deepEquals(value), list()); + } + + public static Matcher> isInternalSuccess(Matcher valueMatcher) { + return isInternalResult(valueMatcher, list()); + } + + public static Matcher> isInternalResult(Matcher valueMatcher, Iterable warnings) { + return new FeatureMatcher, Result>(isResult(valueMatcher, warnings), "InternalResult as Result", "Result") { + @Override + protected Result featureValueOf(InternalResult actual) { + return actual.toResult(); + } + }; + } + + public static Matcher> isSuccess(Object value) { + return isSuccess(deepEquals(value)); + } + + public static Matcher> isSuccess(Matcher valueMatcher) { + return isResult(valueMatcher, list()); + } + public static Matcher> isResult(Matcher valueMatcher, Iterable warnings) { return Matchers.allOf( hasProperty("value", valueMatcher), hasWarnings(warnings)); } - public static Matcher> hasWarnings(Iterable warnings) { - return hasProperty("warnings", deepEquals(ImmutableSet.copyOf(warnings))); + public static Matcher hasWarnings(Iterable warnings) { + return hasProperty("warnings", containsInAnyOrder(eagerMap(warnings, Matchers::equalTo))); } } -- cgit v1.2.3