package org.hamcrest; /** * A description of a Matcher. A Matcher will describe itself to a description * which can later be used for reporting. * * @see Matcher#describeTo(Description) */ public interface Description { /** * A description that consumes input but does nothing. */ static final Description NONE = new NullDescription(); /** * Appends some plain text to the description. */ Description appendText(String text); /** * Appends the description of a {@link SelfDescribing} value to this description. */ Description appendDescriptionOf(SelfDescribing value); /** * Appends an arbitrary value to the description. */ Description appendValue(Object value); /** * Appends a list of values to the description. */ <T> Description appendValueList(String start, String separator, String end, T... values); /** * Appends a list of values to the description. */ <T> Description appendValueList(String start, String separator, String end, Iterable<T> values); /** * Appends a list of {@link org.hamcrest.SelfDescribing} objects * to the description. */ Description appendList(String start, String separator, String end, Iterable<? extends SelfDescribing> values); public static final class NullDescription implements Description { @Override public Description appendDescriptionOf(SelfDescribing value) { return this; } @Override public Description appendList(String start, String separator, String end, Iterable<? extends SelfDescribing> values) { return this; } @Override public Description appendText(String text) { return this; } @Override public Description appendValue(Object value) { return this; } @Override public <T> Description appendValueList(String start, String separator, String end, T... values) { return this; } @Override public <T> Description appendValueList(String start, String separator, String end, Iterable<T> values) { return this; } @Override public String toString() { return ""; } } }