001/*  Copyright (c) 2000-2006 hamcrest.org
002 */
003package org.hamcrest.core;
004
005import org.hamcrest.Description;
006import org.hamcrest.Matcher;
007import org.hamcrest.Factory;
008import org.hamcrest.BaseMatcher;
009
010
011/**
012 * A matcher that always returns <code>true</code>.
013 */
014public 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}