package homework3;

/**
 *
 * @author J Dean Brock <brock@unca.edu>
 */
public class TestDriver {

    /* These are the test and results arrays */
    private static final char[] letterArgs
            = {'B', 'I', 'N', 'G', 'O', 'B', 'B', 'I', 'i', '#'} ;
    private static final int[]  numberArgs
            = {  1,  20,  33,  50,  75,  17,   0,  15,  20, 100} ;
    private static final char[] letterResults
            = {'B', 'I', 'N', 'G', 'O', ' ', ' ', ' ', 'I', ' '} ;
    private static final int[] numberResults
            = {  1,  20,  33,  50,  75,   0,   0,   0,  20,  0} ;
    private static final boolean[] exceptionResults
            = {false,false,false,false,false,true,true,true,false,true} ;
    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Testing " + letterArgs.length + " cases") ;
        System.out.println() ;
        int numOK = 0 ;
        for (int i=0; i<letterArgs.length; ++i) {
            BingoLabel b = new BingoLabel() ;
            try {
                b.setLetter(letterArgs[i]) ;
                b.setNumber(numberArgs[i]) ;
                System.out.println("" + letterArgs[i] + numberArgs[i]
                        + " -> " + b) ;
                if (exceptionResults[i]) {
                    System.out.println("  Expecting an exception here!") ;
                } else if (b.getLetter() != letterResults[i]
                        || b.getNumber() != numberResults[i]) {
                    System.out.println("  Problem with get/set!") ;
                } else {
                    ++numOK ;
                }
            } catch (IllegalArgumentException iae) {
                System.out.println("Exception on "
                        + letterArgs[i] + numberArgs[i] 
                        + " -> " + iae.getMessage()) ;
                if (exceptionResults[i]) {
                    ++numOK ;
                }
            }
            System.out.println() ;
        }
        System.out.println() ;
        if (numOK == letterArgs.length) {
            System.out.println("All tests passed!") ;
        } else {
            System.out.println("Failed on "
                    + (letterArgs.length-numOK) + " tests") ;
        }
    }
}
