Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Implementation class:
- // https://pastebin.com/sfBYAjN3
- import org.junit.Test;
- import java.io.ByteArrayOutputStream;
- import java.io.PrintStream;
- import static org.junit.Assert.*;
- public class SquareWithDiagonalJUnitTests {
- @Test
- public void simpleBoxWithCount() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "00000",
- "01000",
- "00200",
- "00030",
- "00004",
- }, () -> {
- // Simplistic implementation hard-coded to produce the above:
- SquareWithDiagonalImpl.main(null);
- });
- }
- @Test
- public void box0() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "0",
- }, 0);
- }
- @Test
- public void box1() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "00",
- "01",
- }, 1);
- }
- @Test
- public void box2() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "000",
- "010",
- "002",
- }, 2);
- }
- @Test
- public void box3() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "0000",
- "0100",
- "0020",
- "0003",
- }, 3);
- }
- @Test
- public void box4() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "00000",
- "01000",
- "00200",
- "00030",
- "00004",
- }, 4);
- }
- @Test
- public void box5() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "000000",
- "010000",
- "002000",
- "000300",
- "000040",
- "000005",
- }, 5);
- }
- @Test
- public void box6() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "0000000",
- "0100000",
- "0020000",
- "0003000",
- "0000400",
- "0000050",
- "0000006",
- }, 6);
- }
- @Test
- public void box9() {
- assertSquareWithDiagonalOutputEquals(new String[]{
- "0000000000",
- "0100000000",
- "0020000000",
- "0003000000",
- "0000400000",
- "0000050000",
- "0000006000",
- "0000000700",
- "0000000080",
- "0000000009",
- }, 9);
- }
- private static void assertSquareWithDiagonalOutputEquals(final String[] expectedOutputLines, final int size) {
- assertSquareWithDiagonalOutputEquals(expectedOutputLines, () -> {
- SquareWithDiagonalImpl.simplisticImplementation_withSeparatePrintStatements(size);
- });
- assertSquareWithDiagonalOutputEquals(expectedOutputLines, () -> {
- SquareWithDiagonalImpl.simplisticImplementation_withTernaryOperator(size);
- });
- assertSquareWithDiagonalOutputEquals(expectedOutputLines, () -> {
- SquareWithDiagonalImpl.streamImplementation(size);
- });
- }
- private static void assertSquareWithDiagonalOutputEquals(final String[] expectedOutputLines, final Runnable callback) {
- final PrintStream oldSystemOut = System.out;
- final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- final PrintStream printStream = new PrintStream(byteArrayOutputStream);
- System.setOut(printStream);
- try {
- // Call code under test, which is expected to send output to "System.out"
- callback.run();
- } finally {
- System.setOut(oldSystemOut);
- printStream.close();
- }
- final String expectedOutput = buildExpectedOutputString(expectedOutputLines);
- assertEquals(expectedOutput, byteArrayOutputStream.toString());
- }
- private static String buildExpectedOutputString(String[] expectedOutputLines) {
- final String NL = System.lineSeparator(); // Local system newline
- final StringBuilder expectedOutputStringBuilder = new StringBuilder();
- for (String line : expectedOutputLines) {
- expectedOutputStringBuilder.append(line);
- expectedOutputStringBuilder.append(NL);
- }
- return expectedOutputStringBuilder.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement