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+ }
0 commit comments