package org.hamcrest.beans; import org.hamcrest.Matcher; import org.junit.Test; import static org.hamcrest.AbstractMatcherTest.*; import static org.hamcrest.beans.HasProperty.hasProperty; /** * @author Iain McGinniss * @author Nat Pryce * @author Steve Freeman * @author Tom Denley * @since 1.1.0 */ public final class HasPropertyTest { private final HasPropertyWithValueTest.BeanWithoutInfo bean = new HasPropertyWithValueTest.BeanWithoutInfo("a bean", false); @Test public void copesWithNullsAndUnknownTypes() { Matcher<Object> matcher = hasProperty("irrelevant"); assertNullSafe(matcher); assertUnknownTypeSafe(matcher); } @Test public void matchesWhenThePropertyExists() { assertMatches(hasProperty("writeOnlyProperty"), bean); } @Test public void doesNotMatchIfPropertyDoesNotExist() { assertDoesNotMatch(hasProperty("aNonExistentProp"), bean); } @Test public void describesItself() { assertDescription("hasProperty(\"property\")", hasProperty("property")); } @Test public void describesAMismatch() { assertMismatchDescription("no \"aNonExistentProp\" in <[Person: a bean]>", hasProperty("aNonExistentProp"), bean); } }