Created
April 12, 2018 09:20
-
-
Save fredlahde/514a9559c637f28905dc53ec01b91591 to your computer and use it in GitHub Desktop.
SQS Tests
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.junit.Test; | |
public class NextDateTest { | |
@Test | |
public void it_runs_correct_for_valid_date_in_a_leap_year() { | |
String[] testInput = new String[]{"29", "02", "2020"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput, s -> s.equals("Morgen ist der 1 . 3 . 2020\n")); | |
} | |
@Test | |
public void it_runs_correct_for_valid_date_in_non_leap_year() { | |
String[] testInput = new String[]{"28", "02", "2019"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput, s -> s.equals("Morgen ist der 1 . 3 . 2019\n")); | |
} | |
@Test | |
public void it_runs_correct_for_a_valid_year() { | |
String[] testInput1 = new String[]{"03", "03", "1845"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput1, s -> s.equals("Morgen ist der 4 . 3 . 1845\n")); | |
String[] testInput2 = new String[]{"03", "03", "2020"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput2, s -> s.equals("Morgen ist der 4 . 3 . 2020\n")); | |
} | |
@Test | |
public void it_runs_correct_for_an_invalid_year() { | |
String[] testInput1 = new String[]{"03", "03", "1805"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput1, s -> s.equals("Jahr nicht innerhalb 1812..2020\n")); | |
String[] testInput2 = new String[]{"03", "03", "2022"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput2, s -> s.equals("Jahr nicht innerhalb 1812..2020\n")); | |
} | |
@Test | |
public void it_runs_correct_for_a_valid_month() { | |
String[] testInput1 = new String[]{"03", "05", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput1, s -> s.equals("Morgen ist der 4 . 5 . 2018\n")); | |
String[] testInput2 = new String[]{"03", "06", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput2, s -> s.equals("Morgen ist der 4 . 6 . 2018\n")); | |
} | |
@Test | |
public void it_runs_correct_for_an_invalid_month() { | |
String[] testInput1 = new String[]{"03", "-01", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput1, s -> s.equals("Monat nicht innerhalb 1..12\n")); | |
String[] testInput2 = new String[]{"03", "14", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput2, s -> s.equals("Monat nicht innerhalb 1..12\n")); | |
} | |
@Test | |
public void it_runs_correct_for_a_valid_day() { | |
String[] testInput1 = new String[]{"12", "05", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput1, s -> s.equals("Morgen ist der 13 . 5 . 2018\n")); | |
String[] testInput2 = new String[]{"", "06", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput2, s -> s.equals("Morgen ist der 16 . 6 . 2018\n")); | |
} | |
@Test | |
public void it_runs_correct_for_an_invalid_day() { | |
String[] testInput1 = new String[]{"-03", "05", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput1, s -> s.equals("Tag nicht innerhalb 1..31\n")); | |
String[] testInput2 = new String[]{"45", "06", "2018"}; | |
StdOutAsserter.assertAgainstStdOut(NextDate::main, testInput2, s -> s.equals("Tag nicht innerhalb 1..31\n")); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.junit.Assert; | |
import java.io.ByteArrayOutputStream; | |
import java.io.PrintStream; | |
import java.nio.charset.StandardCharsets; | |
import java.util.function.Consumer; | |
import java.util.function.Function; | |
public class StdOutAsserter { | |
public static <T> void assertAgainstStdOut(Consumer<T> testFunction, T input, Function<String, Boolean> assertion) { | |
ByteArrayOutputStream baos = new ByteArrayOutputStream(); | |
try (PrintStream stdOut = new PrintStream(baos)) { | |
System.setOut(stdOut); | |
testFunction.accept(input); | |
String content = new String(baos.toByteArray(), StandardCharsets.UTF_8); | |
Assert.assertTrue(assertion.apply(content)); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment