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}