| 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); |
| } |
| |
| } |