NonEmptyTest.java (2150B)
1 import org.junit.jupiter.api.Test; 2 3 import static org.junit.jupiter.api.Assertions.*; 4 5 class NonEmptyTest { 6 7 Cons<Integer> cons = new NonEmpty<>(1, new NonEmpty<>(2, new NonEmpty<>(3, new Empty<>()))); 8 Cons<String> stringCons = new NonEmpty<>("Hallo", new NonEmpty<>("Welt", new Empty<>())); 9 10 @Test 11 void testFirst() { 12 assertEquals(1, cons.first()); 13 } 14 15 @Test 16 void testRest() { 17 var expected = new NonEmpty<>(2, new NonEmpty<>(3, new Empty<>())); 18 assertEquals(expected, cons.rest()); 19 20 var sExpected = new NonEmpty<>("Welt", new Empty<>()); 21 assertEquals(sExpected, stringCons.rest()); 22 23 assertThrows(UnsupportedOperationException.class, () -> 24 cons.rest().rest().rest().rest().rest()); 25 } 26 27 @Test 28 void testMap() { 29 var expected = new NonEmpty<>(1, new NonEmpty<>(4, new NonEmpty<>(9, new Empty<>()))); 30 assertEquals(expected, cons.map(n -> n*n)); 31 32 expected = new NonEmpty<>(5, new NonEmpty<>(4, new Empty<>())); 33 assertEquals(expected, stringCons.map(String::length)); 34 } 35 36 @Test 37 void testFilter() { 38 var expected = new NonEmpty<>(1, new NonEmpty<>(3, new Empty<>())); 39 assertEquals(expected, cons.filter(n -> n % 2 == 1)); 40 assertEquals(new Empty<>(), cons.filter(n -> n > 10)); 41 42 var sExpected = new NonEmpty<>("Hallo", new Empty<>()); 43 assertEquals(sExpected, stringCons.filter(s -> s.startsWith("Ha"))); 44 } 45 46 @Test 47 void testFoldl() { 48 assertEquals(6, cons.foldl(Integer::sum, 0)); 49 assertEquals("WeltHallo", stringCons.foldl(String::concat, "")); 50 } 51 52 @Test 53 void testFoldr() { 54 assertEquals(6, cons.foldr(Integer::sum, 0)); 55 assertEquals("HalloWelt", stringCons.foldr(String::concat, "")); 56 } 57 58 @Test 59 void testEmpty() { 60 assertFalse(cons.empty()); 61 } 62 63 @Test 64 void testToString() { 65 var expected = "(cons 1 (cons 2 (cons 3 empty)))"; 66 assertEquals(expected, cons.toString()); 67 68 expected = "(cons Hallo (cons Welt empty))"; 69 assertEquals(expected, stringCons.toString()); 70 } 71 }