package com.github.donkirkby.vograbulary.ultraghost;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
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 PuzzlePreviousWordTest {
@Parameter
public String letters;
@Parameter(value=1)
public String previousWord;
@Parameter(value=2)
public String solution;
@Parameter(value=3)
public String challenge;
@Parameter(value=4)
public WordResult expectedResult;
@Parameters(name="{0} after {1}: {2}/{3} => {4}")
public static List<Object[]> getParameters() {
return Arrays.asList(new Object[][] {
{"PIE", null, "PINE", null, WordResult.VALID},
{"PIE", "PINE", "PINE", null, WordResult.TOO_SOON},
{"PIE", "PINE", "PIPE", null, WordResult.VALID},
{"PIE", "PINE", "PIECE", null, WordResult.VALID},
{"PIE", "PINE", "PIECE", "PIPE", WordResult.SHORTER},
{"PIE", "PINE", "PIECE", "PINE", WordResult.IMPROVEMENT_TOO_SOON},
{"PIE", "PINE", "", "PINE", WordResult.IMPROVED_SKIP_TOO_SOON}
});
}
private WordList wordList;
private Puzzle puzzle;
@Before
public void setUp() {
wordList = new WordList();
wordList.read(Arrays.asList("piece", "pipe", "pine", "rope", "mime", "mine"));
puzzle = new Puzzle(letters, new Student("Bob"), wordList);
puzzle.setPreviousWord(previousWord);
puzzle.setSolution(solution);
puzzle.setResponse(challenge);
}
@Test
public void getResult() {
WordResult result = puzzle.getResult();
assertThat("result", result, is(expectedResult));
}
}