diff --git a/core-java-modules/core-java-13/pom.xml b/core-java-modules/core-java-13/pom.xml
new file mode 100644
index 0000000000..1f215ae6b0
--- /dev/null
+++ b/core-java-modules/core-java-13/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+ com.baeldung
+ core-java-13
+ 0.1.0-SNAPSHOT
+ core-java-13
+ jar
+ http://maven.apache.org
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+ ../../
+
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${maven.compiler.source.version}
+ ${maven.compiler.target.version}
+ 13
+ --enable-preview
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.0.0-M3
+
+ --enable-preview
+
+
+
+
+
+
+ 13
+ 13
+ 3.6.1
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-13/src/test/java/com/baeldung/switchExpression/SwitchExpressionsUnitTest.java b/core-java-modules/core-java-13/src/test/java/com/baeldung/switchExpression/SwitchExpressionsUnitTest.java
new file mode 100644
index 0000000000..00f42813b4
--- /dev/null
+++ b/core-java-modules/core-java-13/src/test/java/com/baeldung/switchExpression/SwitchExpressionsUnitTest.java
@@ -0,0 +1,76 @@
+package com.baeldung.switchExpression;
+
+import static java.time.Month.AUGUST;
+import static java.time.Month.JUNE;
+
+import static org.junit.Assert.assertEquals;
+
+import java.time.Month;
+import java.util.function.Function;
+
+import org.junit.Test;
+
+public class SwitchExpressionsUnitTest {
+
+ @Test
+ @SuppressWarnings ("preview")
+ public void switchExpression() {
+
+ var month = JUNE;
+
+ var result = switch (month) {
+ case JANUARY, JUNE, JULY -> 3;
+ case FEBRUARY, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER -> 1;
+ case MARCH, MAY, APRIL -> 2;
+ default -> 0;
+ };
+
+ assertEquals(result, 3);
+ }
+
+ @Test
+ @SuppressWarnings ("preview")
+ public void switchExpressionWithYieldKeyword() {
+ var month = AUGUST;
+
+ var result = switch (month) {
+ case JANUARY, JUNE, JULY -> 3;
+ case FEBRUARY, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER -> 1;
+ case MARCH, MAY, APRIL, AUGUST -> {
+ int monthLength = month.toString().length();
+ yield monthLength * 4;
+ }
+ default -> 0;
+ };
+
+ assertEquals(24, result);
+ }
+
+ @Test
+ @SuppressWarnings ("preview")
+ public void switchStatementWithReturnInsideBlock() {
+
+ Function func = (month) -> {
+ switch (month) {
+ case JANUARY, JUNE, JULY -> { return 3; }
+ default -> { return 0; }
+ }
+ };
+
+ assertEquals(Integer.valueOf(3), func.apply(Month.JANUARY));
+ }
+
+ @Test
+ @SuppressWarnings ("preview")
+ public void switchExpressionWithAllCasesCovered() {
+ var month = AUGUST;
+
+ var result = switch (month) {
+ case JANUARY, JUNE, JULY -> 3;
+ case FEBRUARY, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER -> 1;
+ case MARCH, MAY, APRIL, AUGUST -> 2;
+ };
+
+ assertEquals(result, 2);
+ }
+}