Skip to content

Commit fd02671

Browse files
committed
Add Java 18 test class ...
- UTF-8 by Default - Deprecated Method finalize() - Simple Web Server
1 parent edeadd8 commit fd02671

File tree

5 files changed

+92
-0
lines changed

5 files changed

+92
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,6 @@ This project includes unit tests for key functionalities introduced in each Java
2929
- [Java 15](src/test/java/pl/mperor/lab/java/Java15.java)
3030
- [Java 16](src/test/java/pl/mperor/lab/java/Java16.java)
3131
- [Java 17](src/test/java/pl/mperor/lab/java/Java17.java)
32+
- [Java 18](src/test/java/pl/mperor/lab/java/Java18.java)
3233

3334
For detailed examples and tests of each feature, please refer to the individual source files linked above.

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,8 @@ test {
2323

2424
tasks.withType(JavaCompile) {
2525
options.encoding = 'UTF-8'
26+
}
27+
28+
tasks.withType(Test) {
29+
jvmArgs("-Dfile.encoding=UTF-8")
2630
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package pl.mperor.lab.java;
2+
3+
import com.sun.net.httpserver.HttpServer;
4+
import org.junit.jupiter.api.Assertions;
5+
import org.junit.jupiter.api.Test;
6+
import pl.mperor.lab.TestUtils;
7+
8+
import java.io.BufferedReader;
9+
import java.io.IOException;
10+
import java.io.InputStreamReader;
11+
import java.io.OutputStream;
12+
import java.net.InetSocketAddress;
13+
import java.nio.charset.Charset;
14+
15+
/**
16+
* Java 18 (March 2022)
17+
*/
18+
public class Java18 {
19+
20+
@Test
21+
public void testDefaultCharsetIsUTF8() throws IOException {
22+
System.out.printf("Running Java Version: %d, file.encoding=%s, native.encoding=%s%n",
23+
Runtime.version().feature(),
24+
System.getProperty("file.encoding"),
25+
System.getProperty("native.encoding")
26+
);
27+
28+
Charset defaultCharset = Charset.defaultCharset();
29+
Assertions.assertEquals("UTF-8", defaultCharset.name());
30+
31+
var utf8Reader = new BufferedReader(new InputStreamReader(ClassLoader.getSystemResourceAsStream("encoding/fileUTF8.txt")));
32+
var win1250Reader = new BufferedReader(new InputStreamReader(ClassLoader.getSystemResourceAsStream("encoding/fileWin1250.txt"), Charset.forName("windows-1250")));
33+
34+
try (utf8Reader; win1250Reader) {
35+
Assertions.assertEquals(utf8Reader.readLine(), win1250Reader.readLine());
36+
}
37+
}
38+
39+
@Test
40+
public void testSimpleWebServer() throws IOException, InterruptedException {
41+
HttpServer server = HttpServer.create(new InetSocketAddress(9000), 0);
42+
server.createContext("/hello", exchange -> {
43+
String response = "Hello World!";
44+
exchange.sendResponseHeaders(200, response.getBytes().length);
45+
try (OutputStream os = exchange.getResponseBody()) {
46+
os.write(response.getBytes());
47+
}
48+
});
49+
server.start();
50+
Assertions.assertNotNull(server);
51+
Assertions.assertEquals("Hello World!", curlResponse("http://127.0.0.1:9000/hello"));
52+
53+
server.stop(0);
54+
}
55+
56+
private static String curlResponse(String url) throws IOException, InterruptedException {
57+
var curlProcess = new ProcessBuilder("curl", url).start();
58+
String result;
59+
try (var reader = curlProcess.inputReader()) {
60+
result = reader.readLine();
61+
}
62+
curlProcess.waitFor();
63+
curlProcess.destroy();
64+
return result;
65+
}
66+
67+
@SuppressWarnings("removal")
68+
@Test
69+
public void testFinalizeDeprecated() throws Throwable {
70+
var out = TestUtils.setTempSystemOut();
71+
72+
// warning: finalize() in Object has been deprecated and marked for removal
73+
var object = new Object() {
74+
@Override
75+
protected void finalize() throws Throwable {
76+
super.finalize();
77+
System.out.print("finalizing ...");
78+
}
79+
};
80+
object.finalize();
81+
Assertions.assertEquals("finalizing ...", out.all());
82+
TestUtils.resetSystemOut();
83+
}
84+
85+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Zażółć gęślą jaźń
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Za��� g�l� ja��

0 commit comments

Comments
 (0)