Link to code: MarkovModelTest.java
import static org.junit.Assert.*;
import java.util.Scanner;
import org.junit.Before;
import org.junit.Test;
public class MarkovModelTest {
// TODO: change to MapMarkovModel
private MarkovModel myMark;
@Before
public void setUp() {
myMark = new MarkovModel();
}
/**
* This test checks if MapMarkovModel makes a correct " Ngram using a simple
* source
*/
@Test(timeout = 10000)
public void testMapMakeNgram() {
myMark.initialize(new Scanner("aabbaabbaabbaabbaabbaabbaabbaabbaabbaabba"
+ "abbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabb"));
myMark.process("2");
String output = "";
while (output.length() < 8) {
output = myMark.makeNGram(2, 100);
}
assertFalse("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("aaa"));
assertFalse("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("bbb"));
assertFalse("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("aba"));
assertFalse("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("bab"));
assertTrue("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("aab"));
assertTrue("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("baa"));
assertTrue("This test checks if MarkovModel makes a correct " +
"Ngram using a simple source",
output.contains("abb"));
assertTrue("This test checks if MarkovModel makes a correct " + "Ngram using a simple source",
output.contains("bba"));
}
/**
* This test checks if MarkovModel makes a correct " Ngram when the source
* contains only one distinct letter
*/
@Test(timeout = 10000)
public void testMapAllRepeats() {
myMark.initialize(new Scanner("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
myMark.process("1");
String output = "";
while (output.length() < 8) {
output = myMark.makeNGram(1,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".length());
}
assertEquals("This test checks if MarkovModel makes a correct " +
"Ngram when the source contains only one distinct letter",
output, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa".substring(0, output.length()));
}
/**
* This test checks if MarkovModel makes a correct Ngram when the source
* contains no repeat letters
*/
@Test(timeout = 10000)
public void testMapNoRepeats() {
myMark.initialize(new Scanner("qwertyuiopasdfghjklzxcvbnm"));
myMark.process("1");
String output = myMark.makeNGram(1, 100);
assertTrue(
"This test checks if MarkovModel makes a correct " +
"Ngram when the source contains no repeat letters",
"qwertyuiopasdfghjklzxcvbnm".contains(output));
}
}