| package org.hamcrest.collection; |
| |
| import org.hamcrest.FeatureMatcher; |
| import org.hamcrest.Matcher; |
| |
| import static org.hamcrest.core.DescribedAs.describedAs; |
| import static org.hamcrest.core.IsEqual.equalTo; |
| |
| /** |
| * Matches if array size satisfies a nested matcher. |
| */ |
| public class IsArrayWithSize<E> extends FeatureMatcher<E[], Integer> { |
| public IsArrayWithSize(Matcher<? super Integer> sizeMatcher) { |
| super(sizeMatcher, "an array with size","array size"); |
| } |
| |
| @Override |
| protected Integer featureValueOf(E[] actual) { |
| return actual.length; |
| } |
| |
| /** |
| * Creates a matcher for arrays that matches when the <code>length</code> of the array |
| * satisfies the specified matcher. |
| * For example: |
| * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(equalTo(2)))</pre> |
| * |
| * @param sizeMatcher |
| * a matcher for the length of an examined array |
| */ |
| public static <E> Matcher<E[]> arrayWithSize(Matcher<? super Integer> sizeMatcher) { |
| return new IsArrayWithSize<E>(sizeMatcher); |
| } |
| |
| /** |
| * Creates a matcher for arrays that matches when the <code>length</code> of the array |
| * equals the specified <code>size</code>. |
| * For example: |
| * <pre>assertThat(new String[]{"foo", "bar"}, arrayWithSize(2))</pre> |
| * |
| * @param size |
| * the length that an examined array must have for a positive match |
| */ |
| public static <E> Matcher<E[]> arrayWithSize(int size) { |
| return arrayWithSize(equalTo(size)); |
| } |
| |
| /** |
| * Creates a matcher for arrays that matches when the <code>length</code> of the array |
| * is zero. |
| * For example: |
| * <pre>assertThat(new String[0], emptyArray())</pre> |
| * |
| */ |
| public static <E> Matcher<E[]> emptyArray() { |
| Matcher<E[]> isEmpty = arrayWithSize(0); |
| return describedAs("an empty array", isEmpty); |
| } |
| } |