package com.github.donkirkby.vograbulary.bacronyms;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.util.Arrays;
import org.junit.Before;
import org.junit.Test;
import com.github.donkirkby.vograbulary.ultraghost.WordList;
public class ControllerTest {
private Controller controller;
private BacronymsScreen screen;
@Before
public void setUp() {
WordList wordList = new WordList();
wordList.read(Arrays.asList("alpha", "beta", "ateb", "gamma"));
screen = new DummyScreen();
controller = new Controller();
controller.setWordList(wordList);
controller.setScreen(screen);
controller.loadPuzzles(Arrays.asList(
"alpha ateb gamma",
"one two three"));
}
@Test
public void next() {
controller.next();
Puzzle puzzle = screen.getPuzzle();
String word = puzzle.getWord(1);
assertThat("word", word, is("ATEB"));
}
@Test
public void secondPuzzle() {
controller.next();
controller.next();
Puzzle nextPuzzle = screen.getPuzzle();
String word = nextPuzzle.getWord(1);
assertThat("word", word, is("TWO"));
}
@Test
public void startState() {
assertThat("state", screen.getState(), is(BacronymsScreen.State.START));
}
@Test
public void nextState() {
controller.next();
assertThat("state", screen.getState(), is(BacronymsScreen.State.NEW));
}
@Test
public void solve() {
controller.next();
Puzzle puzzle = screen.getPuzzle();
puzzle.setSelectedIndex(1);
controller.solve();
assertThat("state", screen.getState(), is(BacronymsScreen.State.SOLVED));
}
@Test
public void solveBadly() {
controller.next();
Puzzle puzzle = screen.getPuzzle();
puzzle.setSelectedIndex(0);
controller.solve();
assertThat("state", screen.getState(), is(BacronymsScreen.State.WRONG));
}
}