package com.github.donkirkby.vograbulary; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import com.github.donkirkby.vograbulary.LetterDisplay.LetterDisplayListener; public class LetterDisplayTest implements LetterDisplayListener { public static final int LETTER_WIDTH = 5; public static final int LETTER_HEIGHT = 8; public static class DummyLetterDisplay extends LetterDisplay { private int left; private int top; private float textSize; private String letter; public DummyLetterDisplay(String letter) { this.letter = letter; } @Override public int getTop() { return top; } @Override public void setTop(int top) { this.top = top; } @Override public int getLeft() { return left; } @Override public void setLeft(int left) { this.left = left; } @Override public void animateTo(int left, int top) { setLeft(left); setTop(top); } @Override public float getTextSize() { return textSize; } @Override public void setTextSize(float textSize) { this.textSize = textSize; } @Override public int getHeight() { return LETTER_HEIGHT; } @Override public int getWidth() { return LETTER_WIDTH; } @Override public String getLetter() { return letter; } } public static class DummyLetterDisplayFactory extends LetterDisplayFactory { private List<DummyLetterDisplay> active = new ArrayList<>(); @Override public LetterDisplay create(String letter) { LetterDisplayTest.DummyLetterDisplay display = new LetterDisplayTest.DummyLetterDisplay(letter); active.add(display); return display; } @Override public void destroy(LetterDisplay letter) { active.remove(letter); } public List<DummyLetterDisplay> getActive() { return active; } } private LetterDisplay display; private int clickCount; @Before public void setUp() { display = new DummyLetterDisplay("P"); display.addClickListener(this); clickCount = 0; } @Override public void onClick(LetterDisplay letter) { clickCount++; } @Test public void right() { int left = 10; int expectedRight = left + LETTER_WIDTH; display.setLeft(left); int right = display.getRight(); assertThat("right", right, is(expectedRight)); } @Test public void getCentreY() { int top = 10; int expectedCentrey = top + LETTER_HEIGHT/2; display.setTop(top); assertThat("centre y", display.getCentreY(), is(expectedCentrey)); } @Test public void setCentreY() { int centreY = 10; int expectedTop = centreY - LETTER_HEIGHT/2; display.setCentreY(centreY); assertThat("top", display.getTop(), is(expectedTop)); } @Test public void getCentreX() { int left = 10; int expectedCentreX = left + LETTER_WIDTH/2; display.setLeft(left); assertThat("centre x", display.getCentreX(), is(expectedCentreX)); } @Test public void setCentreX() { int centreX = 10; int expectedLeft = centreX - LETTER_WIDTH/2; display.setCentreX(centreX); assertThat("left", display.getLeft(), is(expectedLeft)); } @Test public void click() { display.click(); assertThat("click count", clickCount, is(1)); } }