1 package org.hamcrest.number; 2 3 import org.hamcrest.AbstractMatcherTest; 4 import org.hamcrest.Matcher; 5 6 import java.math.BigDecimal; 7 8 import static org.hamcrest.number.BigDecimalCloseTo.closeTo; 9 10 public class BigDecimalCloseToTest extends AbstractMatcherTest { 11 private final Matcher<BigDecimal> matcher = closeTo(new BigDecimal("1.0"), new BigDecimal("0.5")); 12 13 @Override createMatcher()14 protected Matcher<?> createMatcher() { 15 BigDecimal irrelevant = new BigDecimal("0.01"); 16 return closeTo(irrelevant, irrelevant); 17 } 18 testEvaluatesToTrueIfArgumentIsEqualToABigDecimalWithinSomeError()19 public void testEvaluatesToTrueIfArgumentIsEqualToABigDecimalWithinSomeError() { 20 assertTrue(matcher.matches(new BigDecimal("1.0"))); 21 assertTrue(matcher.matches(new BigDecimal("0.5"))); 22 assertTrue(matcher.matches(new BigDecimal("1.5"))); 23 24 assertDoesNotMatch("too large", matcher, new BigDecimal("2.0")); 25 assertMismatchDescription("<2.0> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("2.0")); 26 assertDoesNotMatch("number too small", matcher, new BigDecimal("0.0")); 27 assertMismatchDescription("<0.0> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("0.0")); 28 } 29 testEvaluatesToTrueIfArgumentHasDifferentScale()30 public void testEvaluatesToTrueIfArgumentHasDifferentScale() { 31 assertTrue(matcher.matches(new BigDecimal("1.000000"))); 32 assertTrue(matcher.matches(new BigDecimal("0.500000"))); 33 assertTrue(matcher.matches(new BigDecimal("1.500000"))); 34 35 assertDoesNotMatch("too large", matcher, new BigDecimal("2.000000")); 36 assertMismatchDescription("<2.000000> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("2.000000")); 37 assertDoesNotMatch("number too small", matcher, new BigDecimal("0.000000")); 38 assertMismatchDescription("<0.000000> differed by <0.5> more than delta <0.5>", matcher, new BigDecimal("0.000000")); 39 } 40 test_is_self_describing()41 public void test_is_self_describing() { 42 assertDescription("a numeric value within <0.5> of <1.0>", matcher); 43 } 44 45 } 46