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.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 PuzzleResultTest {
@Parameter
public String letters;
@Parameter(value=1)
public int minimumLength;
@Parameter(value=2)
public String solution;
@Parameter(value=3)
public WordResult expectedResult;
@Parameters(name="{0} at least {1}: {2} => {3}")
public static List<Object[]> getParameters() {
return Arrays.asList(new Object[][] {
{"PIE", 4, "PIZE", WordResult.NOT_A_WORD},
{"PIE", 4, "PIZS", WordResult.NOT_A_WORD}, // user probably wants to know
{"PIE", 4, "PIECE", WordResult.VALID},
{"PIE", 4, "piece", WordResult.VALID},
{"PIE", 4, "ripe", WordResult.NOT_A_MATCH},
{"PIE", 4, "pipe", WordResult.VALID},
{"PIE", 5, "pipe", WordResult.TOO_SHORT},
{"PIE", 5, "piece", WordResult.VALID},
{"PIE", 4, Puzzle.NOT_SET, WordResult.UNKNOWN},
{"PIE", 4, Puzzle.NO_SOLUTION, WordResult.SKIPPING} });
}
@Test
public void checkSolution() {
WordList wordList = new WordList();
wordList.read(Arrays.asList("piece", "ripe", "pipe"));
Puzzle puzzle = new Puzzle(letters, new Student("Bob"), wordList);
puzzle.setMinimumWordLength(minimumLength);
puzzle.setSolution(solution);
WordResult result = puzzle.getResult();
assertThat("result", result, is(expectedResult));
}
}