package org.javersion.object; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; public class ReflectionEquals<T> extends BaseMatcher<T> { public static <T> ReflectionEquals<T> reflectionEquals(T wanted) { return new ReflectionEquals<T>(wanted); } private final T wanted; public ReflectionEquals(T wanted) { this.wanted = wanted; } @Override public boolean matches(Object item) { return EqualsBuilder.reflectionEquals(item, wanted); } @Override public void describeTo(Description description) { description.appendText(ReflectionToStringBuilder.toString(wanted)); } @Override public void describeMismatch(Object item, Description description) { description.appendText("was ").appendValue(ReflectionToStringBuilder.toString(item)); } }