package org.testory.common;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.testory.testing.Fakes.newObject;
import org.junit.Before;
import org.junit.Test;
public class TestDelegatingMatcher {
private Matcher matcher, decorated;
private Object object, other;
private String string;
@Before
public void before() {
object = newObject("object");
other = newObject("other");
string = "string";
}
@Test
public void delegates_matching() {
matcher = new DelegatingMatcher(same(object));
assertTrue(matcher.matches(object));
assertFalse(matcher.matches(other));
}
@Test
public void delegates_printing() {
decorated = new Matcher() {
public boolean matches(Object item) {
return false;
}
public String toString() {
return string;
}
};
matcher = new DelegatingMatcher(decorated);
assertEquals(decorated.toString(), matcher.toString());
}
@Test
public void fails_for_null_matcher() {
try {
new DelegatingMatcher(null);
fail();
} catch (NullPointerException e) {}
}
private static Matcher same(final Object instance) {
return new Matcher() {
public boolean matches(Object item) {
return instance == item;
}
public String toString() {
return "same(" + instance + ")";
}
};
}
}