Skip to content

Instantly share code, notes, and snippets.

@fredlahde
Created April 12, 2018 09:20
Show Gist options
  • Save fredlahde/514a9559c637f28905dc53ec01b91591 to your computer and use it in GitHub Desktop.
Save fredlahde/514a9559c637f28905dc53ec01b91591 to your computer and use it in GitHub Desktop.
SQS Tests
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"));
}
}
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