    001    /*  Copyright (c) 2000-2006 hamcrest.org
    002     */
    003    package org.hamcrest.core;
    004
    005    import org.hamcrest.Description;
    006    import org.hamcrest.Matcher;
    007    import org.hamcrest.Factory;
    008    import org.hamcrest.BaseMatcher;
    009
    010
    011    /**
    012     * A matcher that always returns <code>true</code>.
    013     */
    014    public class IsAnything<T> extends BaseMatcher<T> {
    015
    016        private final String message;
    017
    018        public IsAnything() {
    019            this("ANYTHING");
    020        }
    021
    022        public IsAnything(String message) {
    023            this.message = message;
    024        }
    025
    026        @Override
    027        public boolean matches(Object o) {
    028            return true;
    029        }
    030
    031        @Override
    032        public void describeTo(Description description) {
    033            description.appendText(message);
    034        }
    035
    036        /**
    037         * Creates a matcher that always matches, regardless of the examined object.
    038         */
    039        @Factory
    040        public static Matcher<Object> anything() {
    041            return new IsAnything<Object>();
    042        }
    043
    044        /**
    045         * Creates a matcher that always matches, regardless of the examined object, but describes
    046         * itself with the specified {@link String}.
    047         *
    048         * @param description
    049         *     a meaningful {@link String} used when describing itself
    050         */
    051        @Factory
    052        public static Matcher<Object> anything(String description) {
    053            return new IsAnything<Object>(description);
    054        }
    055    }