package com.levelup.java.hamcrest;
import static org.hamcrest.CoreMatchers.everyItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.number.IsCloseTo.*;
import static org.hamcrest.number.OrderingComparison.*;
import static org.junit.Assert.assertThat;
import static org.hamcrest.number.BigDecimalCloseTo.*;
import java.math.BigDecimal;
import java.util.List;
import org.junit.Test;
import com.google.common.collect.Lists;
/**
* This java example will demonstrate testing
* numbers with junit hamcrest matchers.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/hamcrest-number-matchers-junit-testing/'>Numbers matcher</a>
*
*/
public class NumberMatchers {
@Test
public void number_close_to_number () {
assertThat(200.24, is(closeTo(200, 1)));
}
@Test
public void number_greaterthan () {
assertThat(20, greaterThan(18));
}
@Test
public void everyitem_in_list_greaterthan_number () {
List<Integer> ages = Lists.newArrayList(21, 25, 30);
assertThat(ages, everyItem(greaterThan(18)));
}
@Test
public void everyitem_in_list_greaterthan_or_equal_to_number () {
List<Integer> ages = Lists.newArrayList(21, 25, 30, 18);
assertThat(ages, everyItem(greaterThanOrEqualTo(18)));
}
@Test
public void everyitem_in_list_lessthan_number() {
List<Integer> ages = Lists.newArrayList(21, 25, 30);
assertThat(ages, everyItem(lessThan(31)));
}
@Test
public void everyitem_in_list_lessthan_or_equal_to_number () {
List<Integer> ages = Lists.newArrayList(21, 25, 30, 18);
assertThat(ages, everyItem(lessThanOrEqualTo(30)));
}
@Test
public void bigdecimal_is_close_to_bigdecimal () {
BigDecimal seniorCitizen = new BigDecimal(65);
// is close to retirement
assertThat(new BigDecimal(60),
is(closeTo(seniorCitizen, new BigDecimal(5))));
}
}