New unit test format

This commit is contained in:
Nick
2019-08-30 21:11:18 +01:00
parent db85c8f275
commit 6cd385e4c0
19972 changed files with 1626600 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
### Relevant Articles
- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern)
- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern)
- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check)
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>design-patterns-2</artifactId>
<version>1.0</version>
<name>design-patterns-2</name>
<packaging>jar</packaging>
<parent>
<groupId>com.baeldung</groupId>
<artifactId>patterns</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>${intellij.annotations.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.inferred</groupId>
<artifactId>freebuilder</artifactId>
<version>${freebuilder.version}</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>${javax.annotations.version}</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<intellij.annotations.version>16.0.2</intellij.annotations.version>
<assertj.version>3.12.2</assertj.version>
<freebuilder.version>2.4.1</freebuilder.version>
<javax.annotations.version>3.0.2</javax.annotations.version>
</properties>
</project>
@@ -0,0 +1,25 @@
package com.baeldung.freebuilder;
import org.inferred.freebuilder.FreeBuilder;
import java.util.Optional;
@FreeBuilder
public interface Address {
Optional<String> getAddressLine1();
Optional<String> getAddressLine2();
Optional<String> getAddressLine3();
String getCity();
Optional<String> getState();
Optional<Long> getPinCode();
class Builder extends Address_Builder {
}
}
@@ -0,0 +1,65 @@
package com.baeldung.freebuilder;
import org.inferred.freebuilder.FreeBuilder;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@FreeBuilder
public interface Employee {
String getName();
int getAge();
String getDepartment();
String getRole();
String getSupervisorName();
String getDesignation();
String getEmail();
long getPhoneNumber();
Optional<Boolean> getPermanent();
Optional<String> getDateOfJoining();
@Nullable
String getCurrentProject();
Address getAddress();
List<Long> getAccessTokens();
Map<String, Long> getAssetsSerialIdMapping();
Optional<Double> getSalaryInUSD();
class Builder extends Employee_Builder {
public Builder() {
// setting default value for department
setDepartment("Builder Pattern");
}
@Override
public Builder setEmail(String email) {
if (checkValidEmail(email))
return super.setEmail(email);
else
throw new IllegalArgumentException("Invalid email");
}
private boolean checkValidEmail(String email) {
return email.contains("@");
}
}
}
@@ -0,0 +1,53 @@
package com.baeldung.freebuilder.builder;
public class Employee {
private final String name;
private final int age;
private final String department;
private Employee(String name, int age, String department) {
this.name = name;
this.age = age;
this.department = department;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getDepartment() {
return department;
}
public static class Builder {
private String name;
private int age;
private String department;
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public Builder setDepartment(String department) {
this.department = department;
return this;
}
public Employee build() {
return new Employee(name, age, department);
}
}
}
@@ -0,0 +1,13 @@
package com.baeldung.mediator;
public class Button {
private Mediator mediator;
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public void press() {
this.mediator.press();
}
}
@@ -0,0 +1,24 @@
package com.baeldung.mediator;
public class Fan {
private Mediator mediator;
private boolean isOn = false;
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public boolean isOn() {
return isOn;
}
public void turnOn() {
this.mediator.start();
isOn = true;
}
public void turnOff() {
isOn = false;
this.mediator.stop();
}
}
@@ -0,0 +1,37 @@
package com.baeldung.mediator;
public class Mediator {
private Button button;
private Fan fan;
private PowerSupplier powerSupplier;
public void setButton(Button button) {
this.button = button;
this.button.setMediator(this);
}
public void setFan(Fan fan) {
this.fan = fan;
this.fan.setMediator(this);
}
public void setPowerSupplier(PowerSupplier powerSupplier) {
this.powerSupplier = powerSupplier;
}
public void press() {
if (fan.isOn()) {
fan.turnOff();
} else {
fan.turnOn();
}
}
public void start() {
powerSupplier.turnOn();
}
public void stop() {
powerSupplier.turnOff();
}
}
@@ -0,0 +1,11 @@
package com.baeldung.mediator;
public class PowerSupplier {
public void turnOn() {
// implementation
}
public void turnOff() {
// implementation
}
}
@@ -0,0 +1,27 @@
package com.baeldung.memento;
public class TextEditor {
private TextWindow textWindow;
private TextWindowState savedTextWindow;
public TextEditor(TextWindow textWindow) {
this.textWindow = textWindow;
}
public void write(String text) {
textWindow.addText(text);
}
public String print() {
return textWindow.getCurrentText();
}
public void hitSave() {
savedTextWindow = textWindow.save();
}
public void hitUndo() {
textWindow.restore(savedTextWindow);
}
}
@@ -0,0 +1,26 @@
package com.baeldung.memento;
public class TextWindow {
private StringBuilder currentText;
public TextWindow() {
this.currentText = new StringBuilder();
}
public String getCurrentText() {
return currentText.toString();
}
public void addText(String text) {
currentText.append(text);
}
public TextWindowState save() {
return new TextWindowState(currentText.toString());
}
public void restore(TextWindowState save) {
currentText = new StringBuilder(save.getText());
}
}
@@ -0,0 +1,14 @@
package com.baeldung.memento;
public class TextWindowState {
private String text;
public TextWindowState(String text) {
this.text = text;
}
public String getText() {
return text;
}
}
@@ -0,0 +1,10 @@
package com.baeldung.nullobject;
public class JmsRouter implements Router {
@Override
public void route(Message msg) {
System.out.println("Routing to a JMS queue. Msg: " + msg);
}
}
@@ -0,0 +1,24 @@
package com.baeldung.nullobject;
public class Message {
private String body;
private String priority;
public Message(String body, String priority) {
this.body = body;
this.priority = priority;
}
public String getPriority() {
return priority;
}
@Override
public String toString() {
return "{body='" + body + '\'' +
", priority='" + priority + '\'' +
'}';
}
}
@@ -0,0 +1,10 @@
package com.baeldung.nullobject;
public class NullRouter implements Router {
@Override
public void route(Message msg) {
// do nothing
}
}
@@ -0,0 +1,7 @@
package com.baeldung.nullobject;
public interface Router {
void route(Message msg);
}
@@ -0,0 +1,23 @@
package com.baeldung.nullobject;
public class RouterFactory {
public static Router getRouterForMessage(Message msg) {
if (msg.getPriority() == null) {
return new NullRouter();
}
switch (msg.getPriority()) {
case "high":
return new SmsRouter();
case "medium":
return new JmsRouter();
default:
return new NullRouter();
}
}
}
@@ -0,0 +1,30 @@
package com.baeldung.nullobject;
import java.util.Arrays;
import java.util.List;
public class RoutingHandler {
public void handle(Iterable<Message> messages){
for (Message msg : messages) {
Router router = RouterFactory.getRouterForMessage(msg);
router.route(msg);
}
}
public static void main(String[] args) {
Message highPriorityMsg = new Message("Alert!", "high");
Message mediumPriorityMsg = new Message("Warning!", "medium");
Message lowPriorityMsg = new Message("Take a look!", "low");
Message nullPriorityMsg = new Message("Take a look!", null);
List<Message> messages = Arrays.asList(highPriorityMsg,
mediumPriorityMsg,
lowPriorityMsg,
nullPriorityMsg);
RoutingHandler routingHandler = new RoutingHandler();
routingHandler.handle(messages);
}
}
@@ -0,0 +1,10 @@
package com.baeldung.nullobject;
public class SmsRouter implements Router {
@Override
public void route(Message msg) {
System.out.println("Routing to a SMS gateway. Msg: " + msg);
}
}
@@ -0,0 +1,30 @@
package com.baeldung.nulls;
public class APIContracts {
/**
* Prints the value of {@code param} if not null. Prints {@code null} otherwise.
*
* @param param
*/
public void print(Object param) {
System.out.println("Printing " + param);
}
/**
* @return non null result
* @throws Exception - if result is null
*/
public Object process() throws Exception {
Object result = doSomething();
if (result == null) {
throw new Exception("Processing fail. Got a null response");
} else {
return result;
}
}
private Object doSomething() {
return null;
}
}
@@ -0,0 +1,13 @@
package com.baeldung.nulls;
public class Assertions {
public void accept(Object param){
assert param != null;
doSomething(param);
}
private void doSomething(Object param) {
}
}
@@ -0,0 +1,25 @@
package com.baeldung.nulls;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class EmptyCollections {
public List<String> names() {
if (userExist()) {
return Stream.of(readName()).collect(Collectors.toList());
} else {
return Collections.emptyList();
}
}
private boolean userExist() {
return false;
}
private String readName() {
return "test";
}
}
@@ -0,0 +1,30 @@
package com.baeldung.nulls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class FindBugsAnnotations {
public void accept(@NotNull Object param) {
System.out.println(param.toString());
}
public void print(@Nullable Object param) {
System.out.println("Printing " + param);
}
@NotNull
public Object process() throws Exception {
Object result = doSomething();
if (result == null) {
throw new Exception("Processing fail. Got a null response");
} else {
return result;
}
}
private Object doSomething() {
return null;
}
}
@@ -0,0 +1,39 @@
package com.baeldung.nulls;
public class Preconditions {
public void goodAccept(String one, String two, String three) {
if (one == null || two == null || three == null) {
throw new IllegalArgumentException();
}
process(one);
process(two);
process(three);
}
public void badAccept(String one, String two, String three) {
if (one == null) {
throw new IllegalArgumentException();
} else {
process(one);
}
if (two == null) {
throw new IllegalArgumentException();
} else {
process(two);
}
if (three == null) {
throw new IllegalArgumentException();
} else {
process(three);
}
}
private void process(String one) {
}
}
@@ -0,0 +1,21 @@
package com.baeldung.nulls;
public class PrimitivesAndWrapper {
public static int primitiveSum(int a, int b) {
return a + b;
}
public static Integer wrapperSum(Integer a, Integer b) {
return a + b;
}
public static Integer goodSum(Integer a, Integer b) {
if (a != null && b != null) {
return a + b;
} else {
throw new IllegalArgumentException();
}
}
}
@@ -0,0 +1,10 @@
package com.baeldung.nulls;
import lombok.NonNull;
public class UsingLombok {
public void accept(@NonNull Object param){
System.out.println(param);
}
}
@@ -0,0 +1,11 @@
package com.baeldung.nulls;
import java.util.Objects;
public class UsingObjects {
public void accept(Object param) {
Objects.requireNonNull(param);
// doSomething()
}
}
@@ -0,0 +1,23 @@
package com.baeldung.nulls;
import java.util.Optional;
public class UsingOptional {
public Optional<Object> process(boolean processed) {
String response = doSomething(processed);
return Optional.ofNullable(response);
}
private String doSomething(boolean processed) {
if (processed) {
return "passed";
} else {
return null;
}
}
}
@@ -0,0 +1,22 @@
package com.baeldung.nulls;
import org.apache.commons.lang3.StringUtils;
public class UsingStringUtils {
public void accept(String param) {
if (StringUtils.isNotEmpty(param)) {
System.out.println(param);
} else {
throw new IllegalArgumentException();
}
}
public void acceptOnlyNonBlank(String param) {
if (StringUtils.isNotBlank(param)) {
System.out.println(param);
} else {
throw new IllegalArgumentException();
}
}
}
@@ -0,0 +1,226 @@
package com.baeldung.freebuilder;
import org.junit.jupiter.api.Test;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class EmployeeBuilderUnitTest {
private static final int PIN_CODE = 223344;
public static final String CITY_NAME = "New York";
public static final int INPUT_SALARY_EUROS = 10000;
public static final double EUROS_TO_USD_RATIO = 0.6;
@Test
public void whenBuildEmployeeWithAddress_thenReturnEmployeeWithValidAddress() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).build();
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setPermanent(true)
.setRole("developer")
.setAddress(address)
.build();
// then
assertTrue(employee.getAddress().getCity().equalsIgnoreCase(CITY_NAME));
}
@Test
public void whenMapSalary_thenReturnEmployeeWithSalaryInUSD() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).setPinCode(PIN_CODE).build();
long salaryInEuros = INPUT_SALARY_EUROS;
Employee.Builder builder = new Employee.Builder();
Employee employee = builder
.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setPermanent(true)
.setRole("developer")
.setAddress(address)
.mapSalaryInUSD(sal -> salaryInEuros * EUROS_TO_USD_RATIO)
.build();
// then
assertTrue(employee.getAddress().getPinCode().get() == PIN_CODE);
}
@Test
public void whenOptionalFields_thenReturnEmployeeWithEmptyValues() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).build();
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setPermanent(true)
.setRole("developer")
.setAddress(address)
.build();
// then
assertTrue(employee.getPermanent().isPresent());
assertTrue(employee.getPermanent().get());
assertFalse(employee.getDateOfJoining().isPresent());
}
@Test
public void whenNullableFields_thenReturnEmployeeWithNullValueForField() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).build();
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setNullablePermanent(null)
.setDateOfJoining(Optional.empty())
.setRole("developer")
.setAddress(address)
.build();
// then
assertNull(employee.getCurrentProject());
}
@Test
public void whenCollectionFields_thenReturnEmployeeWithValues() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).build();
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setNullablePermanent(null)
.setDateOfJoining(Optional.empty())
.setRole("developer")
.addAccessTokens(1221819L)
.addAccessTokens(1223441L, 134567L)
.setAddress(address)
.build();
// then
assertTrue(employee.getAccessTokens().size() == 3);
}
@Test
public void whenMapFields_thenReturnEmployeeWithValues() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).build();
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setNullablePermanent(null)
.setDateOfJoining(Optional.empty())
.setRole("developer")
.addAccessTokens(1221819L)
.addAccessTokens(1223441L, 134567L)
.putAssetsSerialIdMapping("Laptop", 12345L)
.setAddress(address)
.build();
// then
assertTrue(employee.getAssetsSerialIdMapping().size() == 1);
}
@Test
public void whenNestedBuilderTypes_thenReturnEmployeeWithValues() {
// when
Address.Builder addressBuilder = new Address.Builder();
Address address = addressBuilder.setCity(CITY_NAME).build();
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setDesignation("author")
.setEmail("abc@xyz.com")
.setSupervisorName("Admin")
.setPhoneNumber(4445566)
.setNullablePermanent(null)
.setDateOfJoining(Optional.empty())
.setRole("developer")
.addAccessTokens(1221819L)
.addAccessTokens(1223441L, 134567L)
.putAssetsSerialIdMapping("Laptop", 12345L)
.setAddress(address)
.mutateAddress(a -> a.setPinCode(112200))
.build();
// then
assertTrue(employee.getAssetsSerialIdMapping().size() == 1);
}
@Test()
public void whenPartialEmployeeWithValidEmail_thenReturnEmployeeWithEmail() {
// when
Employee.Builder builder = new Employee.Builder();
Employee employee = builder.setName("baeldung")
.setAge(10)
.setEmail("abc@xyz.com")
.buildPartial();
assertNotNull(employee.getEmail());
}
}
@@ -0,0 +1,27 @@
package com.baeldung.freebuilder.builder;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
class EmployeeBuilderUnitTest {
public static final String NAME = "baeldung";
@Test
public void whenBuildEmployee_thenReturnValidEmployee() {
// when
Employee.Builder emplBuilder = new Employee.Builder();
Employee employee = emplBuilder
.setName(NAME)
.setAge(12)
.setDepartment("Builder Pattern")
.build();
//then
Assertions.assertTrue(employee.getName().equalsIgnoreCase(NAME));
}
}
@@ -0,0 +1,36 @@
package com.baeldung.mediator;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class MediatorIntegrationTest {
private Button button;
private Fan fan;
@Before
public void setUp() {
this.button = new Button();
this.fan = new Fan();
PowerSupplier powerSupplier = new PowerSupplier();
Mediator mediator = new Mediator();
mediator.setButton(this.button);
mediator.setFan(fan);
mediator.setPowerSupplier(powerSupplier);
}
@Test
public void givenTurnedOffFan_whenPressingButtonTwice_fanShouldTurnOnAndOff() {
assertFalse(fan.isOn());
button.press();
assertTrue(fan.isOn());
button.press();
assertFalse(fan.isOn());
}
}
@@ -0,0 +1,20 @@
package com.baeldung.memento;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
class TextEditorUnitTest {
@Test
void givenTextEditor_whenAddTextSaveAddMoreAndUndo_thenSavecStateRestored() {
TextEditor textEditor = new TextEditor(new TextWindow());
textEditor.write("The Memento Design Pattern\n");
textEditor.write("How to implement it in Java?\n");
textEditor.hitSave();
textEditor.write("Buy milk and eggs before coming home\n");
textEditor.hitUndo();
assertThat(textEditor.print()).isEqualTo("The Memento Design Pattern\nHow to implement it in Java?\n");
}
}
@@ -0,0 +1,35 @@
package com.baeldung.nulls;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
class PrimitivesAndWrapperUnitTest {
@Test
public void givenBothArgsNonNull_whenCallingWrapperSum_thenReturnSum() {
Integer sum = PrimitivesAndWrapper.wrapperSum(0, 0);
assertEquals(0, sum.intValue());
}
@Test()
public void givenOneArgIsNull_whenCallingWrapperSum_thenThrowNullPointerException() {
assertThrows(NullPointerException.class, () -> PrimitivesAndWrapper.wrapperSum(null, 2));
}
@Test()
public void givenBothArgsNull_whenCallingWrapperSum_thenThrowNullPointerException() {
assertThrows(NullPointerException.class, () -> PrimitivesAndWrapper.wrapperSum(null, null));
}
@Test()
public void givenOneArgNull_whenCallingGoodSum_thenThrowIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> PrimitivesAndWrapper.goodSum(null, 2));
}
}
@@ -0,0 +1,24 @@
package com.baeldung.nulls;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
class UsingLombokUnitTest {
private UsingLombok classUnderTest;
@BeforeEach
public void setup() {
classUnderTest = new UsingLombok();
}
@Test
public void whenNullArg_thenThrowNullPointerException() {
assertThrows(NullPointerException.class, () -> classUnderTest.accept(null));
}
}
@@ -0,0 +1,30 @@
package com.baeldung.nulls;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertThrows;
class UsingObjectsUnitTest {
private UsingObjects classUnderTest;
@BeforeEach
public void setup() {
classUnderTest = new UsingObjects();
}
@Test
public void whenArgIsNull_thenThrowException() {
assertThrows(NullPointerException.class, () -> classUnderTest.accept(null));
}
@Test
public void whenArgIsNonNull_thenDoesNotThrowException() {
assertDoesNotThrow(() -> classUnderTest.accept("test "));
}
}
@@ -0,0 +1,42 @@
package com.baeldung.nulls;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
class UsingOptionalUnitTest {
private UsingOptional classUnderTest;
@BeforeEach
public void setup() {
classUnderTest = new UsingOptional();
}
@Test
public void whenArgIsFalse_thenReturnEmptyResponse() {
Optional<Object> result = classUnderTest.process(false);
assertFalse(result.isPresent());
}
@Test
public void whenArgIsTrue_thenReturnValidResponse() {
Optional<Object> result = classUnderTest.process(true);
assertTrue(result.isPresent());
}
@Test
public void whenArgIsFalse_thenChainResponseAndThrowException() {
assertThrows(Exception.class, () -> classUnderTest.process(false).orElseThrow(() -> new Exception()));
}
}
@@ -0,0 +1,42 @@
package com.baeldung.nulls;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
class UsingStringUtilsUnitTest {
private UsingStringUtils classUnderTest;
@BeforeEach
public void setup() {
classUnderTest = new UsingStringUtils();
}
@Test
public void givenArgIsNull_whenCallingAccept_throwIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> classUnderTest.accept(null));
}
@Test
public void givenArgIsEmpty_whenCallingAccept_throwIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> classUnderTest.accept(""));
}
@Test
public void givenArgIsNull_whenCallingAcceptOnlyNonBlank_throwIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> classUnderTest.acceptOnlyNonBlank(null));
}
@Test
public void givenArgIsEmpty_whenCallingAcceptOnlyNonBlank_throwIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> classUnderTest.acceptOnlyNonBlank(""));
}
@Test
public void givenArgIsBlank_whenCallingAcceptOnlyNonBlank_throwIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> classUnderTest.acceptOnlyNonBlank(" "));
}
}