Link to code: TestWordFinder.java
import static org.junit.Assert.*;
import org.junit.*;
import java.util.*;
public class TestWordFinder {
private IBoardMaker myMaker;
private IWordOnBoardFinder myFinder;
public class LocalBoardMaker implements IBoardMaker {
private String[] good = {
"atru",
"sean",
"niot",
"bden"
};
public BoggleBoard makeBoard(int rows) {
String[] faces = new String[good.length*good.length];
int count = 0;
for(String s : good){
for(int k=0; k < s.length(); k++)
faces[count++] = ""+s.charAt(k);
}
return new BoggleBoard(faces);
}
}
@Before
public void setUp(){
myMaker = new LocalBoardMaker();
myFinder = new BadWordOnBoardFinder();
}
private String getWord(BoggleBoard board, List<BoardCell> list){
String word = "";
for(BoardCell cell : list){
word += board.getFace(cell.row, cell.col);
}
return word;
}
@Test
public void testGoodCorners(){
String[] cornerWords = {
"ate", "noted", "net",
"urn", "bind", "aside", "noise"
};
BoggleBoard board = myMaker.makeBoard(4);
for(String s : cornerWords){
List<BoardCell> list = myFinder.cellsForWord(board, s);
String word = getWord(board,list);
assertEquals("fail for "+s,s,word);
}
}
@Test
public void testBadCorners(){
String[] cornerWords = {
"notary", "urine", "need", "diners", "astride", "nosier"
};
BoggleBoard board = myMaker.makeBoard(4);
for(String s : cornerWords){
List<BoardCell> list = myFinder.cellsForWord(board, s);
String word = getWord(board,list);
assertNotSame("fail for "+s,s,word);
}
}
@Test
public void testNonCorners(){
String[] words = {
"reinstate", "resident", "insert", "trains", "treated"
};
BoggleBoard board = myMaker.makeBoard(4);
for(String s : words){
List<BoardCell> list = myFinder.cellsForWord(board, s);
String word = getWord(board,list);
assertEquals("fail for "+s,s,word);
}
}
}