package com.github.donkirkby.vograbulary.poemsorting; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.List; import org.junit.Test; public class PoemDisplayTest { @Test public void display() { List<Poem> poems = Poem.load( "Guess I'm a poet, ", "I didn't know it."); int width = 15; String expectedDisplay = "egssu i'm a \n" + " eopt, \n" + "i ddin't know\n" + " it. \n" + "gudidnetmkaow\n" + "i esioit n \n" + " pt \n" + " s \n"; PoemDisplay display = new PoemDisplay(poems.get(0), width); assertThat("display", buildTextDisplay(display), is(expectedDisplay)); } @Test public void trailingSpaces() { List<Poem> poems = Poem.load( "Guess I'm a poet, ", "I didn't know it."); int width = 15; String expectedDisplay = "egssu i'm a \n" + " eopt, \n" + "i ddin't know\n" + " it. \n" + "gudidnetmkaow\n" + "i esioit n \n" + " pt \n" + " s \n"; PoemDisplay display = new PoemDisplay(poems.get(0), width); assertThat("display", buildTextDisplay(display), is(expectedDisplay)); } @Test public void wrapTwice() { List<Poem> poems = Poem.load( "Guess I'm a poet, ", "I didn't know it."); int width = 10; String expectedDisplay = "egssu i'm\n" + " a \n" + " eopt,\n" + "i ddin't \n" + " know \n" + " it. \n" + "gudianetm\n" + "i esdnit \n" + " ioow \n" + " kt \n" + " p \n" + " s \n"; PoemDisplay display = new PoemDisplay(poems.get(0), width); assertThat("display", buildTextDisplay(display), is(expectedDisplay)); } @Test public void displayBlankColumn() { List<Poem> poems = Poem.load( "Guess I'm a poet, ", "I did not know it."); int width = 20; String expectedDisplay = "egssu i'm a eopt, \n" + "i ddi not know it.\n" + "gudid iom anooeit \n" + "i ess n t k pw t \n"; PoemDisplay display = new PoemDisplay(poems.get(0), width); assertThat("display", buildTextDisplay(display), is(expectedDisplay)); } private String buildTextDisplay(PoemDisplay display) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < display.getBodyLineCount(); i++) { for (int j = 0; j < display.getWidth(); j++) { builder.append(display.getBody(i, j)); } builder.append('\n'); } for (int i = 0; i < display.getClueLineCount(); i++) { for (int j = 0; j < display.getWidth(); j++) { builder.append(display.getClue(i, j)); } builder.append('\n'); } return builder.toString(); } }