package edu.pdx.cs410J.junit;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
/**
* This test demonstrates the use of various matchers from the Hamcrest library
* for performing more advanced assertions in unit tests.
*
* <a href="http://hamcrest.org/JavaHamcrest">http://hamcrest.org/JavaHamcrest</a>
*
* @since Summer 2013
*/
public class HamcrestMatchersTest {
@Test
public void isEqualTo() {
Integer int1 = new Integer("123");
Integer int2 = new Integer("123");
assertThat(int1, is(equalTo(int2)));
}
@Test
public void isNullValue() {
assertThat(null, is(nullValue()));
}
@Test
public void isSameInstance() {
Object o = new Object();
assertThat(o, is(sameInstance(o)));
}
@Test
public void strings() {
String s = "Hamcrest is awesome";
assertThat(s, startsWith("Hamcrest"));
assertThat(s, endsWith("awesome"));
assertThat(s, containsString("is"));
assertThat(s, is(not(isEmptyString())));
assertThat(s, is(equalToIgnoringCase("HAMCREST IS AWESOME")));
}
@Test
public void everyItemIsNotNull() {
List<String> list = Arrays.asList("a", "b", "c");
assertThat(list, everyItem(is(notNullValue(String.class))));
}
@Test
public void numbers() {
double pi = 3.1415;
assertThat(pi, is(greaterThan(2.0)));
assertThat(pi, is(both(greaterThan(1.0)).and(lessThan(4.0))));
assertThat(pi, is(closeTo(3.14, 0.01)));
}
@Test
public void arrays() {
Integer[] array = { 1, 2, 3, 4, 5};
assertThat(array, hasItemInArray(4));
assertThat(array, is(arrayWithSize(5)));
assertThat(array, is(not(emptyArray())));
assertThat(4, isIn(array));
}
}