Skip to content

Commit 2133e9b

Browse files
authored
BAEL-7176: How to avoid NoSuchElementException with Stream (#15098)
1 parent 89fe639 commit 2133e9b

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.baeldung.nosuchelementexception;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.List;
6+
import java.util.NoSuchElementException;
7+
import java.util.Optional;
8+
9+
import org.junit.Test;
10+
11+
public class NoSuchElementExceptionStreamUnitTest {
12+
13+
@Test(expected = NoSuchElementException.class)
14+
public void givenEmptyOptional_whenCallingGetMethod_thenThrowNoSuchElementException() {
15+
List<String> names = List.of("William", "Amelia", "Albert", "Philip");
16+
Optional<String> emptyOptional = names.stream()
17+
.filter(name -> name.equals("Emma"))
18+
.findFirst();
19+
20+
emptyOptional.get();
21+
}
22+
23+
@Test
24+
public void givenEmptyOptional_whenUsingIsPresentMethod_thenReturnDefault() {
25+
List<String> names = List.of("Tyler", "Amelia", "James", "Emma");
26+
Optional<String> emptyOptional = names.stream()
27+
.filter(name -> name.equals("Lucas"))
28+
.findFirst();
29+
30+
String name = "unknown";
31+
if (emptyOptional.isPresent()) {
32+
name = emptyOptional.get();
33+
}
34+
35+
assertEquals("unknown", name);
36+
}
37+
38+
@Test
39+
public void givenEmptyOptional_whenUsingOrElseMethod_thenReturnDefault() {
40+
List<String> names = List.of("Nicholas", "Justin", "James");
41+
Optional<String> emptyOptional = names.stream()
42+
.filter(name -> name.equals("Lucas"))
43+
.findFirst();
44+
45+
String name = emptyOptional.orElse("unknown");
46+
47+
assertEquals("unknown", name);
48+
}
49+
50+
@Test
51+
public void givenEmptyOptional_whenUsingOrElseGetMethod_thenReturnDefault() {
52+
List<String> names = List.of("Thomas", "Catherine", "David", "Olivia");
53+
Optional<String> emptyOptional = names.stream()
54+
.filter(name -> name.equals("Liam"))
55+
.findFirst();
56+
57+
String name = emptyOptional.orElseGet(() -> "unknown");
58+
59+
assertEquals("unknown", name);
60+
}
61+
62+
}

0 commit comments

Comments
 (0)