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 PuzzleNextBetterTest { @Parameter public String letters; @Parameter(value=1) public int minimumLength; @Parameter(value=2) public String solution; @Parameter(value=3) public String improvedSolution; @Parameter(value=4) public String expectedNextBetter; @Parameters(name="{0} at least {1}: {2},{3} => {4}") public static List<Object[]> getParameters() { return Arrays.asList(new Object[][] { {"PIE", 4, "PRIDE", "", "PRICE"}, {"PIE", 4, "PRICE", "", "PIPE"}, {"PIE", 4, "price", "", "PIPE"}, {"PIE", 5, "price", "", "PIECE"}, {"PIE", 4, "PRICE", null, "PIPE"}, {"PIE", 4, "", "PRIDE", "PRICE"}, {"PIE", 4, "PRICE", "PIPE", "PINE"}, {"PIE", 4, "PRICE", "pipe", "PINE"}, {"PIE", 4, "PIPE", "PRICE", "PINE"}, {"PIE", 4, "", "ASKS", "PIERCE"}, {"PIE", 4, null, "ASKS", "PIERCE"}, {"PIE", 4, "", "PAIE", "PIERCE"}, {"PIE", 4, "PINE", "", null}}); } @Test public void findNextBetter() { WordList wordList = new WordList(); wordList.read(Arrays.asList( "pierce", "pride", "price", "pipe", "pine", "asks", "piece")); Puzzle puzzle = new Puzzle(letters, new Student("Bob"), wordList); puzzle.setMinimumWordLength(minimumLength); puzzle.setSolution(solution); puzzle.setResponse(improvedSolution); String nextBetter = puzzle.findNextBetter(); assertThat("next better", nextBetter, is(expectedNextBetter)); } }