001package edu.pdx.cs.joy.junit;
002
003import org.junit.jupiter.api.Test;
004
005import java.util.Arrays;
006import java.util.List;
007
008import static org.hamcrest.Matchers.*;
009import static org.hamcrest.MatcherAssert.assertThat;
010
011/**
012 * This test demonstrates the use of various matchers from the Hamcrest library
013 * for performing more advanced assertions in unit tests.
014 *
015 * <a href="http://hamcrest.org/JavaHamcrest">http://hamcrest.org/JavaHamcrest</a>
016 *
017 * @since Summer 2013
018 */
019class HamcrestMatchersTest {
020
021  @Test
022  void isEqualTo() {
023    Integer int1 = Integer.valueOf("123");
024    Integer int2 = Integer.valueOf("123");
025    assertThat(int1, is(equalTo(int2)));
026  }
027
028  @Test
029  void isNullValue() {
030    assertThat(null, is(nullValue()));
031  }
032
033  @Test
034  void isSameInstance() {
035    Object o = new Object();
036    assertThat(o, is(sameInstance(o)));
037  }
038
039  @Test
040  void strings() {
041    String s = "Hamcrest is awesome";
042    assertThat(s, startsWith("Hamcrest"));
043    assertThat(s, endsWith("awesome"));
044    assertThat(s, containsString("is"));
045    assertThat(s, is(not(isEmptyString())));
046    assertThat(s, is(equalToIgnoringCase("HAMCREST IS AWESOME")));
047  }
048
049  @Test
050  void everyItemIsNotNull() {
051    List<String> list = Arrays.asList("a", "b", "c");
052    assertThat(list, everyItem(is(notNullValue(String.class))));
053  }
054
055  @Test
056  void numbers() {
057    double pi = 3.1415;
058    assertThat(pi, is(greaterThan(2.0)));
059    assertThat(pi, is(both(greaterThan(1.0)).and(lessThan(4.0))));
060    assertThat(pi, is(closeTo(3.14, 0.01)));
061  }
062
063  @Test
064  void arrays() {
065    Integer[] array = { 1, 2, 3, 4, 5};
066    assertThat(array, hasItemInArray(4));
067    assertThat(array, is(arrayWithSize(5)));
068    assertThat(array, is(not(emptyArray())));
069    assertThat(4, isIn(array));
070  }
071}