Skip to content

Commit bf4c154

Browse files
authored
Feature/bael 4749 java 11 features (eugenp#10308)
* BAEL-4749: Added examples for Java 11 * BAEL-4749: Refactor test examples * BAEL-4749: Refactor test examples 2 * BAEL-4749: Fix PR comments * BAEL-4749: Update nestmates examples * BAEL-4749: Use method reference in Predicate.not example * BAEL-4749: Use String::isBlank in Predicate.not example * BAEL-4749: Two space indents when continuing a line * BAEL-4749: Two space indents when continuing a line (2)
1 parent 115fbf8 commit bf4c154

5 files changed

Lines changed: 194 additions & 0 deletions

File tree

core-java-modules/core-java-11-2/pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,29 @@
2828
<version>${assertj.version}</version>
2929
<scope>test</scope>
3030
</dependency>
31+
<dependency>
32+
<groupId>org.mock-server</groupId>
33+
<artifactId>mockserver-junit-jupiter</artifactId>
34+
<version>${mockserver.version}</version>
35+
</dependency>
36+
<dependency>
37+
<groupId>org.junit.jupiter</groupId>
38+
<artifactId>junit-jupiter-engine</artifactId>
39+
<version>${junit.jupiter.version}</version>
40+
<scope>test</scope>
41+
</dependency>
42+
<dependency>
43+
<groupId>org.junit.jupiter</groupId>
44+
<artifactId>junit-jupiter-params</artifactId>
45+
<version>${junit.jupiter.version}</version>
46+
<scope>test</scope>
47+
</dependency>
48+
<dependency>
49+
<groupId>org.junit.jupiter</groupId>
50+
<artifactId>junit-jupiter-api</artifactId>
51+
<version>${junit.jupiter.version}</version>
52+
<scope>test</scope>
53+
</dependency>
3154
</dependencies>
3255

3356
<build>
@@ -48,7 +71,9 @@
4871
<maven.compiler.source.version>11</maven.compiler.source.version>
4972
<maven.compiler.target.version>11</maven.compiler.target.version>
5073
<guava.version>29.0-jre</guava.version>
74+
<junit.jupiter.version>5.7.0</junit.jupiter.version>
5175
<assertj.version>3.17.2</assertj.version>
76+
<mockserver.version>5.11.1</mockserver.version>
5277
</properties>
5378

5479
</project>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.baeldung.features;
2+
3+
public class MainClass {
4+
5+
private static boolean mainPrivateMethod() {
6+
return true;
7+
}
8+
9+
public static class NestedClass {
10+
11+
boolean nestedPublicMethod() {
12+
return mainPrivateMethod();
13+
}
14+
15+
}
16+
17+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.baeldung.features;
2+
3+
import org.junit.jupiter.api.AfterAll;
4+
import org.junit.jupiter.api.BeforeAll;
5+
import org.junit.jupiter.api.Test;
6+
import org.mockserver.integration.ClientAndServer;
7+
import org.mockserver.model.HttpStatusCode;
8+
import org.mockserver.socket.PortFactory;
9+
10+
import java.io.IOException;
11+
import java.net.URI;
12+
import java.net.http.HttpClient;
13+
import java.net.http.HttpRequest;
14+
import java.net.http.HttpResponse;
15+
import java.time.Duration;
16+
17+
import static org.assertj.core.api.Assertions.assertThat;
18+
import static org.mockserver.integration.ClientAndServer.startClientAndServer;
19+
20+
class HttpClientIntegrationTest {
21+
22+
private static ClientAndServer mockServer;
23+
private static int port;
24+
25+
@BeforeAll
26+
static void startServer() {
27+
port = PortFactory.findFreePort();
28+
mockServer = startClientAndServer(port);
29+
mockServer.when(new org.mockserver.model.HttpRequest().withMethod("GET"))
30+
.respond(new org.mockserver.model.HttpResponse()
31+
.withStatusCode(HttpStatusCode.OK_200.code())
32+
.withBody("Hello from the server!"));
33+
}
34+
35+
@AfterAll
36+
static void stopServer() {
37+
mockServer.stop();
38+
}
39+
40+
@Test
41+
void givenSampleHttpRequest_whenRequestIsSent_thenServerResponseIsReceived() throws IOException, InterruptedException {
42+
HttpClient httpClient = HttpClient.newBuilder()
43+
.version(HttpClient.Version.HTTP_2)
44+
.connectTimeout(Duration.ofSeconds(20))
45+
.build();
46+
HttpRequest httpRequest = HttpRequest.newBuilder()
47+
.GET()
48+
.uri(URI.create("http://localhost:" + port))
49+
.build();
50+
HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
51+
assertThat(httpResponse.body()).isEqualTo("Hello from the server!");
52+
}
53+
54+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.baeldung.features;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.io.TempDir;
5+
6+
import javax.annotation.Nonnull;
7+
import java.io.IOException;
8+
import java.nio.file.Files;
9+
import java.nio.file.Path;
10+
import java.util.Arrays;
11+
import java.util.List;
12+
import java.util.function.Predicate;
13+
import java.util.stream.Collectors;
14+
15+
import static org.assertj.core.api.Assertions.assertThat;
16+
17+
class JavaElevenFeaturesUnitTest {
18+
19+
@Test
20+
void givenMultilineString_whenExtractingNonBlankStrippedLines_thenLinesAreReturned() {
21+
String multilineString = "Baeldung helps \n \n developers \n explore Java.";
22+
List<String> lines = multilineString.lines()
23+
.filter(line -> !line.isBlank())
24+
.map(String::strip)
25+
.collect(Collectors.toList());
26+
assertThat(lines).containsExactly("Baeldung helps", "developers", "explore Java.");
27+
}
28+
29+
@Test
30+
void givenTemporaryFile_whenReadingStringContent_thenContentIsReturned(@TempDir Path tempDir) throws IOException {
31+
Path filePath = Files.writeString(Files.createTempFile(tempDir, "demo", ".txt"), "Sample text");
32+
String fileContent = Files.readString(filePath);
33+
assertThat(fileContent).isEqualTo("Sample text");
34+
}
35+
36+
@Test
37+
void givenSampleList_whenConvertingToArray_thenItemsRemainUnchanged() {
38+
List<String> sampleList = Arrays.asList("Java", "Kotlin");
39+
String[] sampleArray = sampleList.toArray(String[]::new);
40+
assertThat(sampleArray).containsExactly("Java", "Kotlin");
41+
}
42+
43+
@Test
44+
void givenSampleList_whenConvertingToUppercaseString_thenUppercaseIsReturned() {
45+
List<String> sampleList = Arrays.asList("Java", "Kotlin");
46+
String resultString = sampleList.stream()
47+
.map((@Nonnull var x) -> x.toUpperCase())
48+
.collect(Collectors.joining(", "));
49+
assertThat(resultString).isEqualTo("JAVA, KOTLIN");
50+
}
51+
52+
@Test
53+
void givenSampleList_whenExtractingNonBlankValues_thenOnlyNonBlanksAreReturned() {
54+
List<String> sampleList = Arrays.asList("Java", "\n \n", "Kotlin", " ");
55+
List<String> withoutBlanks = sampleList.stream()
56+
.filter(Predicate.not(String::isBlank))
57+
.collect(Collectors.toList());
58+
assertThat(withoutBlanks).containsExactly("Java", "Kotlin");
59+
}
60+
61+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.baeldung.features;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import java.util.Arrays;
6+
import java.util.Set;
7+
import java.util.stream.Collectors;
8+
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
class NestedClassesUnitTest {
12+
13+
@Test
14+
public void giveNestedClass_whenCallingMainClassPrivateMethod_thenNoExceptionIsThrown() {
15+
MainClass.NestedClass nestedInstance = new MainClass.NestedClass();
16+
assertThat(nestedInstance.nestedPublicMethod()).isTrue();
17+
}
18+
19+
@Test
20+
public void giveNestedClass_whenCheckingNestmate_thenNestedClassIsReturned() {
21+
assertThat(MainClass.class.isNestmateOf(MainClass.NestedClass.class)).isTrue();
22+
}
23+
24+
@Test
25+
public void giveNestedClass_whenCheckingNestHost_thenMainClassIsReturned() {
26+
assertThat(MainClass.NestedClass.class.getNestHost()).isEqualTo(MainClass.class);
27+
}
28+
29+
@Test
30+
public void giveNestedClass_whenCheckingNestMembers_thenNestMembersAreReturned() {
31+
Set<String> nestedMembers = Arrays.stream(MainClass.NestedClass.class.getNestMembers())
32+
.map(Class::getName)
33+
.collect(Collectors.toSet());
34+
assertThat(nestedMembers).contains(MainClass.class.getName(), MainClass.NestedClass.class.getName());
35+
}
36+
37+
}

0 commit comments

Comments
 (0)