diff options
Diffstat (limited to 'testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java')
-rw-r--r-- | testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java b/testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java new file mode 100644 index 00000000000..12cf0f671f9 --- /dev/null +++ b/testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java @@ -0,0 +1,45 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.test; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.hamcrest.Factory; +import org.hamcrest.Matcher; + +import java.util.Collection; + +/** + * Checks if a collection of strings contains at least one string with the expected regex pattern. + * + * @author gjoranv + * @since 5.1.8 + */ +public class CollectionPatternMatcher extends BaseMatcher<Collection<String>> { + + private final String pattern; + + public CollectionPatternMatcher(String pattern) { + this.pattern = pattern; + } + + @Override + public void describeTo(Description description) { + description.appendText("contains a string that matches expression '" + pattern + "'"); + } + + @Override + public boolean matches(Object o) { + @SuppressWarnings("unchecked") + Collection<String> strings = (Collection<String>) o; + for (String s : strings) + if (s.matches(pattern)) + return true; + return false; + } + + @Factory + public static <T> Matcher<Collection<String>> containsStringWithPattern(String pattern) { + return new CollectionPatternMatcher(pattern); + } + +} |