From d149d9f450d39c15fc4d85544eec13b7017e6cc9 Mon Sep 17 00:00:00 2001 From: Narendra Pathai Date: Sun, 2 Nov 2014 16:51:27 +0530 Subject: [PATCH] Resolved Issue #69 by adding null safe check similar to the one in issue #25 --- .../collection/IsIterableContainingInOrder.java | 13 ++++++++++++- .../collection/IsIterableContainingInOrderTest.java | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java index a6a84638..164bc914 100644 --- a/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java +++ b/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInOrder.java @@ -4,6 +4,7 @@ import org.hamcrest.Factory; import org.hamcrest.Matcher; import org.hamcrest.TypeSafeDiagnosingMatcher; +import org.hamcrest.core.IsNull; import java.util.ArrayList; import java.util.List; @@ -135,7 +136,8 @@ public static Matcher> contains(final Matcher Matcher> contains(Matcher... itemMatchers) { - return contains(asList(itemMatchers)); + final List> nullSafeWithExplicitTypeMatchers = nullSafe(itemMatchers); + return contains(nullSafeWithExplicitTypeMatchers); } /** @@ -155,4 +157,13 @@ public static Matcher> contains(Matcher... public static Matcher> contains(List> itemMatchers) { return new IsIterableContainingInOrder(itemMatchers); } + + @SuppressWarnings("unchecked") + private static List> nullSafe(Matcher[] itemMatchers) { + final List> matchers = new ArrayList>(itemMatchers.length); + for (final Matcher itemMatcher : itemMatchers) { + matchers.add((Matcher) (itemMatcher == null ? IsNull.nullValue() : itemMatcher)); + } + return matchers; + } } diff --git a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java b/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java index 5d03dc43..8cb1bf82 100644 --- a/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java +++ b/hamcrest-library/src/test/java/org/hamcrest/collection/IsIterableContainingInOrderTest.java @@ -53,6 +53,10 @@ public void testDoesNotMatchEmptyIterable() throws Exception { public void testHasAReadableDescription() { assertDescription("iterable containing [<1>, <2>]", contains(1, 2)); } + + public void testCanHandleNullMatchers() { + assertMatches(contains(null, null), asList(null, null)); + } public static class WithValue { private final int value;