Link to code: NGramTester.java

import java.util.*;
import java.io.*;


/**
 * CompSci 100e Spring 2011: Tests random text generator
 *
 * @author Robert C. Duvall
 */
public class NGramTester
{
    private NGram myGenerator;
    private String myText;


    public NGramTester (Scanner input)
    {
        myGenerator = new NGram();
        myText = myGenerator.readFile(input);
    }


    /**
     * Test boundary cases for generating a random string
     */
    public void testRandomSubstring (String s)
    {
        for (int k = 0; k < s.length(); k++)
        {
            System.out.println(myGenerator.getRandomSubstring(s, k + 1));
        }
    }

    public String getText ()
    {
        return myText;
    }

    /**
     * Test follow string is reasonable
     */
    public void testFollowString (String[] prefixes)
    {
        for (int k = 0; k < prefixes.length; k++)
        {
            System.out.println(
               myGenerator.getFollowingCharacters(getText(), prefixes[k]));
        }
    }


    public void testNGram (int min, int max)
    {
        final int RANDOM_TEXT_LENGTH = 256;

        // generate random text to varying degrees of accuracy
        for (int k = min; k <= max; k++)
        {
            System.out.println(k + "-gram");       
            System.out.println(myGenerator.makeNGram(getText(), k, RANDOM_TEXT_LENGTH));
            System.out.println("--------");
        }
    }
    

    /**
     * The start of the program.
     */
    public static void main (String[] args)
    {
        // a simple string to test
        final String SIMPLE = "abcdefghijklmnopqrstuvwxyz";

        // these two values should probably change together
        final String DATA_FILE = "data/lorax.txt";
        final String[] PREFIXES = { "Lor", "th", "the", " ", ",", "Gr" };

        // test accuracy of NGram model
        final int MIN_NUM_LETTERS = 2;
        final int MAX_NUM_LETTERS = 10;

        // test it
        try
        {
            NGramTester tester = new NGramTester(new Scanner(new File(DATA_FILE)));

            // test the model
            tester.testRandomSubstring(SIMPLE);
            System.out.println("--------");
            tester.testFollowString(PREFIXES);
            System.out.println("--------");
            tester.testNGram(MIN_NUM_LETTERS, MAX_NUM_LETTERS);
        }
        catch (IOException e)
        {
            System.out.println("Error reading file " + DATA_FILE);
            System.out.println(e);            
        }
    }
}