Skip to content

Commit bd16ef7

Browse files
committed
Update test class for Java 14 ...
- samples only for standard features - markdown javadoc for JEPs - organize classes related to Java 14 - improve code readability
1 parent 4370f8c commit bd16ef7

File tree

4 files changed

+103
-30
lines changed

4 files changed

+103
-30
lines changed

src/test/java/pl/mperor/lab/java/Java12.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,6 @@
1616
*/
1717
public class Java12 {
1818

19-
@Test
20-
public void testSwitchExpression() {
21-
Assertions.assertEquals("Working Day", getTypeOfDayByNumber(1));
22-
Assertions.assertEquals("Day Off", getTypeOfDayByNumber(6));
23-
Assertions.assertThrows(IllegalStateException.class, () -> getTypeOfDayByNumber(0));
24-
}
25-
26-
private String getTypeOfDayByNumber(int dayOfWeek) {
27-
return switch (dayOfWeek) {
28-
case 1, 2, 3, 4, 5 -> "Working Day";
29-
case 6, 7 -> {
30-
// code block example
31-
yield "Day Off";
32-
}
33-
default -> throw new IllegalStateException("Unexpected value: " + dayOfWeek);
34-
};
35-
}
36-
3719
@Test
3820
public void testStringIndentAndTransformMethods() {
3921
String text = "Hello\nJava 12\n";

src/test/java/pl/mperor/lab/java/Java14.java

Lines changed: 85 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,98 @@
33
import org.junit.jupiter.api.Assertions;
44
import org.junit.jupiter.api.Test;
55

6-
import java.util.Objects;
6+
import static org.junit.jupiter.api.Assertions.assertTrue;
77

8-
/**
9-
* Java 14 (March 2020)
10-
*/
8+
/// Java 14™ (March 2020)
9+
/// [JDK 14](https://openjdk.org/projects/jdk/14)
10+
///
11+
/// - STANDARD FEATURES:
12+
/// - 361: Switch Expressions (Standard)
13+
/// - 358: Helpful NullPointerExceptions
14+
/// - 367: Remove the Pack200 Tools and API
15+
/// - 345: NUMA-Aware Memory Allocation for G1 (+XX:+UseNUMA)
16+
/// - 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector (-XX:+UseConcMarkSweepGC)
17+
/// - 349: JFR Event Streaming
18+
/// - 352: Non-Volatile Mapped Byte Buffers
19+
/// - 364: ZGC on macOS
20+
/// - 365: ZGC on Windows
21+
/// - 362: Deprecate the Solaris and SPARC Ports
22+
/// - 366: Deprecate the ParallelScavenge + SerialOld GC Combination (-XX:-UseParallelOldGC)
23+
///
24+
/// - PREVIEW & INCUBATOR:
25+
/// - 359: Records (Preview)
26+
/// - 305: Pattern Matching for instanceof (Preview)
27+
/// - 368: Text Blocks (Second Preview)
28+
/// - 343: Packaging Tool 'jpackage' (Incubator)
29+
/// - 370: Foreign-Memory Access API (Incubator)
1130
public class Java14 {
1231

32+
@Test
33+
public void testSwitchExpression() {
34+
Assertions.assertEquals("Working Day", getTypeOfDayByNumber(1));
35+
Assertions.assertEquals("Day Off", getTypeOfDayByNumber(6));
36+
Assertions.assertThrows(IllegalStateException.class, () -> getTypeOfDayByNumber(0));
37+
}
38+
39+
private String getTypeOfDayByNumber(int dayOfWeek) {
40+
return switch (dayOfWeek) {
41+
case 1, 2, 3, 4, 5 -> "Working Day";
42+
case 6, 7 -> {
43+
// code block example
44+
yield "Day Off";
45+
}
46+
default -> throw new IllegalStateException("Unexpected value: " + dayOfWeek);
47+
};
48+
}
49+
50+
@Test
51+
public void testSwitchStatementVsSwitchExpression() {
52+
assertTrue(switchExpression(Switch.EXPRESSION));
53+
assertTrue(switchStatement(Switch.STATEMENT));
54+
}
55+
56+
enum Switch {EXPRESSION, STATEMENT}
57+
58+
private static boolean switchExpression(Switch s) {
59+
return switch (s) {
60+
case EXPRESSION -> true;
61+
default -> false;
62+
};
63+
}
64+
65+
private static boolean switchStatement(Switch s) {
66+
switch (s) {
67+
case STATEMENT -> {
68+
return true;
69+
}
70+
default -> {
71+
return false;
72+
}
73+
}
74+
}
75+
1376
@Test
1477
public void testHelpfulNullPointerExceptions() {
1578
NullPointerException exception = Assertions.assertThrows(NullPointerException.class, () -> {
1679
String name = null;
17-
int length = name.length();
80+
name.length();
81+
});
82+
assertTrue(exception.getMessage().contains("Cannot invoke \"String.length()\" because \"name\" is null"));
83+
}
84+
85+
@Test
86+
public void testPack200ToolsAndAPIRemoved() {
87+
Assertions.assertThrows(ClassNotFoundException.class, () -> {
88+
Class.forName("java.util.jar.Pack200");
1889
});
19-
Assertions.assertTrue(exception.getMessage().contains("Cannot invoke \"String.length()\" because \"name\" is null"));
2090
}
91+
92+
@Test
93+
public void testThreadIsInterruptedAlwaysAvailable() {
94+
Thread neverStartedThread = new Thread();
95+
Assertions.assertFalse(neverStartedThread.isInterrupted());
96+
neverStartedThread.interrupt();
97+
Assertions.assertTrue(neverStartedThread.isInterrupted());
98+
}
99+
21100
}

src/test/java/pl/mperor/lab/java/Java15.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
/// - 371: Hidden Classes
2424
/// - 372: Remove the Nashorn JavaScript Engine
2525
/// - 373: Reimplement the Legacy DatagramSocket API
26-
/// - 374: Disable and Deprecate Biased Locking
27-
/// - 377: ZGC: A Scalable Low-Latency Garbage Collector
28-
/// - 379: Shenandoah: A Low-Pause-Time Garbage Collector
26+
/// - 374: Disable and Deprecate Biased Locking (-XX:+UseBiasedLocking)
27+
/// - 377: ZGC: A Scalable Low-Latency Garbage Collector (-XX:+UseZGC)
28+
/// - 379: Shenandoah: A Low-Pause-Time Garbage Collector (-XX:+UseShenandoahGC)
2929
/// - 381: Remove the Solaris and SPARC Ports
3030
/// - 385: Deprecate RMI Activation for Removal [Java17#testRmiActivationRemoved()]
3131
///
@@ -44,8 +44,20 @@ public void testTextBlock() {
4444
"password": "*****"
4545
}
4646
""";
47-
4847
Assertions.assertTrue(json.contains("\"login\": \"admin\""));
48+
49+
String skippedLines = """
50+
a\
51+
b\
52+
c\
53+
""";
54+
Assertions.assertEquals("abc", skippedLines);
55+
56+
String notSkippedSpaces = """
57+
a \s
58+
b\s
59+
c""";
60+
Assertions.assertEquals("a \nb \nc", notSkippedSpaces);
4961
}
5062

5163
@Test

src/test/java/pl/mperor/lab/java/Java16.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
/// - 395: Records
2929
/// - 394: Pattern Matching for instanceof
3030
/// - 390: Warnings for Value-Based Classes
31-
/// - 392: Packaging Tool
31+
/// - 392: Packaging Tool 'jpackage'
3232
/// - 380: Unix-Domain Socket Channels
3333
/// - 396: Strongly Encapsulate JDK Internals by Default [Java17#testStronglyEncapsulatedInternals()]
3434
/// - 376: ZGC: Concurrent Thread-Stack Processing
@@ -46,7 +46,7 @@
4646
/// - 338: Vector API (Incubator)
4747
public class Java16 {
4848

49-
// POJOs
49+
// POJOs with accessors (without getters)
5050
@Test
5151
public void testPairRecord() {
5252
var pair = Pair.of("Boy", "Girl");

0 commit comments

Comments
 (0)