001    package org.junit.matchers;
002    
003    import org.hamcrest.CoreMatchers;
004    import org.hamcrest.Matcher;
005    import org.hamcrest.core.CombinableMatcher.CombinableBothMatcher;
006    import org.hamcrest.core.CombinableMatcher.CombinableEitherMatcher;
007    import org.junit.internal.matchers.StacktracePrintingMatcher;
008    
009    /**
010     * Convenience import class: these are useful matchers for use with the assertThat method, but they are
011     * not currently included in the basic CoreMatchers class from hamcrest.
012     *
013     * @since 4.4
014     */
015    public class JUnitMatchers {
016        /**
017         * @return A matcher matching any collection containing element
018         * @deprecated Please use {@link CoreMatchers#hasItem(Object)} instead.
019         */
020        @Deprecated
021        public static <T> Matcher<Iterable<? super T>> hasItem(T element) {
022            return CoreMatchers.hasItem(element);
023        }
024    
025        /**
026         * @return A matcher matching any collection containing an element matching elementMatcher
027         * @deprecated Please use {@link CoreMatchers#hasItem(Matcher)} instead.
028         */
029        @Deprecated
030        public static <T> Matcher<Iterable<? super T>> hasItem(Matcher<? super T> elementMatcher) {
031            return CoreMatchers.<T>hasItem(elementMatcher);
032        }
033    
034        /**
035         * @return A matcher matching any collection containing every element in elements
036         * @deprecated Please use {@link CoreMatchers#hasItems(Object...)} instead.
037         */
038        @Deprecated
039        public static <T> Matcher<Iterable<T>> hasItems(T... elements) {
040            return CoreMatchers.hasItems(elements);
041        }
042    
043        /**
044         * @return A matcher matching any collection containing at least one element that matches
045         *         each matcher in elementMatcher (this may be one element matching all matchers,
046         *         or different elements matching each matcher)
047         * @deprecated Please use {@link CoreMatchers#hasItems(Matcher...)} instead.
048         */
049        @Deprecated
050        public static <T> Matcher<Iterable<T>> hasItems(Matcher<? super T>... elementMatchers) {
051            return CoreMatchers.hasItems(elementMatchers);
052        }
053    
054        /**
055         * @return A matcher matching any collection in which every element matches elementMatcher
056         * @deprecated Please use {@link CoreMatchers#everyItem(Matcher)} instead.
057         */
058        @Deprecated
059        public static <T> Matcher<Iterable<T>> everyItem(final Matcher<T> elementMatcher) {
060            return CoreMatchers.everyItem(elementMatcher);
061        }
062    
063        /**
064         * @return a matcher matching any string that contains substring
065         * @deprecated Please use {@link CoreMatchers#containsString(String)} instead.
066         */
067        @Deprecated
068        public static Matcher<java.lang.String> containsString(java.lang.String substring) {
069            return CoreMatchers.containsString(substring);
070        }
071    
072        /**
073         * This is useful for fluently combining matchers that must both pass.  For example:
074         * <pre>
075         *   assertThat(string, both(containsString("a")).and(containsString("b")));
076         * </pre>
077         *
078         * @deprecated Please use {@link CoreMatchers#both(Matcher)} instead.
079         */
080        @Deprecated
081        public static <T> CombinableBothMatcher<T> both(Matcher<? super T> matcher) {
082            return CoreMatchers.both(matcher);
083        }
084    
085        /**
086         * This is useful for fluently combining matchers where either may pass, for example:
087         * <pre>
088         *   assertThat(string, either(containsString("a")).or(containsString("b")));
089         * </pre>
090         *
091         * @deprecated Please use {@link CoreMatchers#either(Matcher)} instead.
092         */
093        @Deprecated
094        public static <T> CombinableEitherMatcher<T> either(Matcher<? super T> matcher) {
095            return CoreMatchers.either(matcher);
096        }
097    
098        /**
099         * @return A matcher that delegates to throwableMatcher and in addition
100         *         appends the stacktrace of the actual Throwable in case of a mismatch.
101         */
102        public static <T extends Throwable> Matcher<T> isThrowable(Matcher<T> throwableMatcher) {
103            return StacktracePrintingMatcher.isThrowable(throwableMatcher);
104        }
105    
106        /**
107         * @return A matcher that delegates to exceptionMatcher and in addition
108         *         appends the stacktrace of the actual Exception in case of a mismatch.
109         */
110        public static <T extends Exception> Matcher<T> isException(Matcher<T> exceptionMatcher) {
111            return StacktracePrintingMatcher.isException(exceptionMatcher);
112        }
113    }