summaryrefslogtreecommitdiffstats
path: root/testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java')
-rw-r--r--testutil/src/main/java/com/yahoo/test/CollectionPatternMatcher.java45
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);
+ }
+
+}