package org.hamcrest.number; import org.hamcrest.AbstractMatcherTest; import org.hamcrest.Matcher; import java.math.BigDecimal; import static org.hamcrest.number.BigDecimalCloseTo.closeTo; public class BigDecimalCloseToTest extends AbstractMatcherTest { private final Matcher<BigDecimal> matcher = closeTo(new BigDecimal("1.0"), new BigDecimal("0.5")); @Override protected Matcher<?> createMatcher() { BigDecimal irrelevant = new BigDecimal("0.01"); return closeTo(irrelevant, irrelevant); } public void testEvaluatesToTrueIfArgumentIsEqualToABigDecimalWithinSomeError() { assertTrue(matcher.matches(new BigDecimal("1.0"))); assertTrue(matcher.matches(new BigDecimal("0.5"))); assertTrue(matcher.matches(new BigDecimal("1.5"))); assertDoesNotMatch("too large", matcher, new BigDecimal("2.0")); assertMismatchDescription("<2.0> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("2.0")); assertDoesNotMatch("number too small", matcher, new BigDecimal("0.0")); assertMismatchDescription("<0.0> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("0.0")); } public void testEvaluatesToTrueIfArgumentHasDifferentScale() { assertTrue(matcher.matches(new BigDecimal("1.000000"))); assertTrue(matcher.matches(new BigDecimal("0.500000"))); assertTrue(matcher.matches(new BigDecimal("1.500000"))); assertDoesNotMatch("too large", matcher, new BigDecimal("2.000000")); assertMismatchDescription("<2.000000> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("2.000000")); assertDoesNotMatch("number too small", matcher, new BigDecimal("0.000000")); assertMismatchDescription("<0.000000> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("0.000000")); } public void test_is_self_describing() { assertDescription("a numeric value within <0.5> of <1.0>", matcher); } }