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