package org.hamcrest; /** * Utility class for writing one off matchers. * For example: * <pre> * Matcher<String> aNonEmptyString = new CustomMatcher<String>("a non empty string") { * public boolean matches(Object object) { * return ((object instanceof String) && !((String) object).isEmpty(); * } * }; * </pre> * <p> * This class is designed for scenarios where an anonymous inner class * matcher makes sense. It should not be used by API designers implementing * matchers. * * @author Neil Dunn * @see CustomTypeSafeMatcher for a type safe variant of this class that you probably * want to use. * @param <T> The type of object being matched. */ public abstract class CustomMatcher<T> extends BaseMatcher<T> { private final String fixedDescription; public CustomMatcher(String description) { if (description == null) { throw new IllegalArgumentException("Description should be non null!"); } this.fixedDescription = description; } @Override public final void describeTo(Description description) { description.appendText(fixedDescription); } }