package com.github.donkirkby.vograbulary.russian; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameter; import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class PuzzleDisplayTest { private static final int NO_SELECTION = Puzzle.NO_SELECTION; private Puzzle puzzle; private PuzzleDisplay display; @Parameter public int insertX; @Parameter(value=1) public int expectedWordIndex; @Parameter(value=2) public int expectedCharacterIndex; @Parameters(name="insert at {0} selects word {1} char {2}") public static List<Object[]> getParameters() { return Arrays.asList(new Object[][] { { 55, NO_SELECTION, NO_SELECTION }, // between the two targets { 24, 0, 1 }, // each letter is 10 pixels wide { 14, 0, NO_SELECTION }, // before the first letter { 25, 0, 2 }, // round up when we pass half a letter { 65, 1, 1 } // second word }); } @Before public void setUp() { puzzle = new Puzzle("LEFT RIGHT"); display = new PuzzleDisplay(); display.setPuzzle(puzzle); int word1Left = 10; int word1Width = 40; int word2Left = 60; int word2Width = 50; display.setTargetPositions(word1Left, word1Width, word2Left, word2Width); } @Test public void setTargets() { display.calculateInsertion(insertX); assertThat(puzzle.getTargetWord(), is(expectedWordIndex)); assertThat(puzzle.getTargetCharacter(), is(expectedCharacterIndex)); } }