diff --git a/testing-modules/testing-libraries-2/src/main/java/com/baeldung/systemin/Application.java b/testing-modules/testing-libraries-2/src/main/java/com/baeldung/systemin/Application.java new file mode 100644 index 0000000000..a4607beb0b --- /dev/null +++ b/testing-modules/testing-libraries-2/src/main/java/com/baeldung/systemin/Application.java @@ -0,0 +1,17 @@ +package com.baeldung.systemin; + +import java.util.Scanner; + +public class Application { + + public static final String NAME = "Name: "; + + private Application() { + } + + public static String readName() { + Scanner scanner = new Scanner(System.in); + String input = scanner.next(); + return NAME.concat(input); + } +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemInUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemInUnitTest.java new file mode 100644 index 0000000000..8570ae25fe --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemInUnitTest.java @@ -0,0 +1,40 @@ +package com.baeldung.systemin; + +import com.github.stefanbirkner.systemlambda.SystemLambda; +import org.junit.jupiter.api.Test; +import uk.org.webcompere.systemstubs.SystemStubs; + +import java.io.ByteArrayInputStream; + +import static com.baeldung.systemin.Application.NAME; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class SystemInUnitTest { + private void provideInput(String data) { + ByteArrayInputStream testIn = new ByteArrayInputStream(data.getBytes()); + System.setIn(testIn); + } + + @Test + void givenName_whenReadNameFromInput_thenReturnCorrectResult() { + provideInput("Baeldung"); + String input = Application.readName(); + assertEquals(NAME.concat("Baeldung"), input); + } + + @Test + void givenName_whenReadWithSystemLambda_thenReturnCorrectResult() throws Exception { + SystemLambda.withTextFromSystemIn("Baeldung") + .execute(() -> assertEquals(NAME.concat("Baeldung"), Application.readName())); + } + + @Test + void givenName_whenReadWithSystemStubs_thenReturnCorrectResult() throws Exception { + SystemStubs.withTextFromSystemIn("Baeldung") + .execute(() -> { + assertThat(Application.readName()) + .isEqualTo(NAME.concat("Baeldung")); + }); + } +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemRulesUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemRulesUnitTest.java new file mode 100644 index 0000000000..1797e79e1a --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemRulesUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.systemin; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.TextFromStandardInputStream; + +import static com.baeldung.systemin.Application.NAME; +import static org.junit.Assert.assertEquals; +import static org.junit.contrib.java.lang.system.TextFromStandardInputStream.emptyStandardInputStream; + +public class SystemRulesUnitTest { + + @Rule + public final TextFromStandardInputStream systemIn = emptyStandardInputStream(); + + @Test + public void givenName_whenReadWithSystemRules_thenReturnCorrectResult() { + systemIn.provideLines("Baeldung"); + assertEquals(NAME.concat("Baeldung"), Application.readName()); + } +} + diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemStubsUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemStubsUnitTest.java new file mode 100644 index 0000000000..f978dee97c --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemin/SystemStubsUnitTest.java @@ -0,0 +1,19 @@ +package com.baeldung.systemin; + +import org.junit.Rule; +import org.junit.Test; +import uk.org.webcompere.systemstubs.rules.SystemInRule; + +import static com.baeldung.systemin.Application.NAME; +import static org.assertj.core.api.Assertions.assertThat; + +public class SystemStubsUnitTest { + + @Rule + public SystemInRule systemInRule = new SystemInRule("Baeldung"); + + @Test + public void givenName_whenReadWithSystemStubs_thenReturnCorrectResult() { + assertThat(Application.readName()).isEqualTo(NAME.concat("Baeldung")); + } +}