BAEL-6154: Migrate from Java 8 to Java 17 + tests (#13474)
This commit is contained in:
parent
a54c2c6f17
commit
8f2e92dacb
|
@ -0,0 +1,40 @@
|
||||||
|
package com.baeldung.java8to17;
|
||||||
|
|
||||||
|
public class Address {
|
||||||
|
|
||||||
|
private String street;
|
||||||
|
private String city;
|
||||||
|
private String pin;
|
||||||
|
|
||||||
|
public Address(String street, String city, String pin) {
|
||||||
|
super();
|
||||||
|
this.street = street;
|
||||||
|
this.city = city;
|
||||||
|
this.pin = pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStreet() {
|
||||||
|
return street;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStreet(String street) {
|
||||||
|
this.street = street;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCity() {
|
||||||
|
return city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCity(String city) {
|
||||||
|
this.city = city;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPin() {
|
||||||
|
return pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPin(String pin) {
|
||||||
|
this.pin = pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
package com.baeldung.java8to17;
|
||||||
|
|
||||||
|
public record Circle(double radius) implements Shape {
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.baeldung.java8to17;
|
||||||
|
|
||||||
|
public class Person {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private Address address;
|
||||||
|
|
||||||
|
public Person(String name, Address address) {
|
||||||
|
super();
|
||||||
|
this.name = name;
|
||||||
|
this.address = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Address getAddress() {
|
||||||
|
return address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAddress(Address address) {
|
||||||
|
this.address = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
package com.baeldung.java8to17;
|
||||||
|
|
||||||
|
public record Rectangle(double length, double width) implements Shape {
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.baeldung.java8to17;
|
||||||
|
|
||||||
|
public interface Shape {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.baeldung.java8to17;
|
||||||
|
|
||||||
|
public record Student(int rollNo, String name) {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
package com.baeldung.java17;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.Assert.assertThrows;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import com.baeldung.java8to17.Address;
|
||||||
|
import com.baeldung.java8to17.Circle;
|
||||||
|
import com.baeldung.java8to17.Person;
|
||||||
|
import com.baeldung.java8to17.Rectangle;
|
||||||
|
import com.baeldung.java8to17.Student;
|
||||||
|
|
||||||
|
public class Java8to17ExampleUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenMultiLineText_whenUsingTextBlock_thenStringIsReturned() {
|
||||||
|
String value = """
|
||||||
|
This is a
|
||||||
|
Multi-line
|
||||||
|
Text
|
||||||
|
""";
|
||||||
|
|
||||||
|
assertThat(value).isEqualTo("This is a\nMulti-line\nText\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenString_whenUsingUtilFunctions_thenReturnsExpectedResult() {
|
||||||
|
assertThat(" ".isBlank());
|
||||||
|
assertThat("Twinkle ".repeat(2)).isEqualTo("Twinkle Twinkle ");
|
||||||
|
assertThat("Format Line".indent(4)).isEqualTo(" Format Line\n");
|
||||||
|
assertThat("Line 1 \n Line2".lines()).asList().size().isEqualTo(2);
|
||||||
|
assertThat(" Text with white spaces ".strip()).isEqualTo("Text with white spaces");
|
||||||
|
assertThat("Car, Bus, Train".transform(s1 -> Arrays.asList(s1.split(","))).get(0)).isEqualTo("Car");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenDataModel_whenUsingRecordType_thenBehavesLikeDTO() {
|
||||||
|
Student student = new Student(10, "Priya");
|
||||||
|
Student student2 = new Student(10, "Priya");
|
||||||
|
|
||||||
|
assertThat(student.rollNo()).isEqualTo(10);
|
||||||
|
assertThat(student.name()).isEqualTo("Priya");
|
||||||
|
assertThat(student.equals(student2));
|
||||||
|
assertThat(student.hashCode()).isEqualTo(student2.hashCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenObject_whenThrowingNPE_thenReturnsHelpfulMessage() {
|
||||||
|
Person student = new Person("Lakshmi", new Address("35, West Street", null, null));
|
||||||
|
|
||||||
|
Exception exception = assertThrows(NullPointerException.class, () -> {
|
||||||
|
student.getAddress().getCity().toLowerCase();
|
||||||
|
});
|
||||||
|
|
||||||
|
assertThat(exception.getMessage()).isEqualTo(
|
||||||
|
"Cannot invoke \"String.toLowerCase()\" because the return value of \"com.baeldung.java8to17.Address.getCity()\" is null");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenGenericObject_whenUsingPatternMatching_thenReturnsTargetType() {
|
||||||
|
String city = null;
|
||||||
|
Object obj = new Address("35, West Street", "Chennai", "6000041");
|
||||||
|
|
||||||
|
if (obj instanceof Address address) {
|
||||||
|
city = address.getCity();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertThat(city).isEqualTo("Chennai");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenGenericObject_whenUsingSwitchExpression_thenPatternMatchesRightObject() {
|
||||||
|
Object shape = new Rectangle(10, 20);
|
||||||
|
|
||||||
|
double circumference = switch (shape) {
|
||||||
|
case Rectangle r -> 2 * r.length() + 2 * r.width();
|
||||||
|
case Circle c -> 2 * c.radius() * Math.PI;
|
||||||
|
default -> throw new IllegalArgumentException("Unknown shape");
|
||||||
|
};
|
||||||
|
|
||||||
|
assertThat(circumference).isEqualTo(60);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue