import junit.framework.TestCase;

/**
 * A JUnit test case class.
 * Every method starting with the word "test" will be called when running
 * the test with JUnit.
 */
public class GermanRegVerbTest extends TestCase
{
    private String[] regVerbs = {"spielen", "sagen", "machen", "probieren", "arbeiten"};
    private String[] stems = {"spiel", "sag", "mach", "probier", "arbeit"};
    private String[] pastParts = {"gespielt", "gesagt", "gemacht", "probiert", "gearbeitet"};
    private String[] sing1 = {"spiele", "sage", "mache", "probiere", "arbeite"};
    private String[] sing2 = {"spielst", "sagst", "machst", "probierst", "arbeitest"};
    private String[] sing3 = {"spielt", "sagt", "macht", "probiert", "arbeitet"};
    private String[] plur1 = {"spielen", "sagen", "machen", "probieren", "arbeiten"};
    private String[] plur2 = {"spielt", "sagt", "macht", "probiert", "arbeitet"};
    private String[] plur3 = {"spielen", "sagen", "machen", "probieren", "arbeiten"};
    
    private GermanRegVerb regVerb;
    
    /**
     * Test the getStem method in the GermanRegVerb class
     */
    public void testGetStem()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = stems[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.getStem());
        }
    }
    
    /**
     * Test the get1Sing method in the GermanRegVerb class
     */
    public void testGet1Sing()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = sing1[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.get1Sing());
        }
    }
    
    /**
     * Test the get2Sing method in the GermanRegVerb class
     */
    public void testGet2Sing()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = sing2[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.get2Sing());
        }
    }
    
    /**
     * Test the get3Sing method in the GermanRegVerb class
     */
    public void testGet3Sing()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = sing3[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.get3Sing());
        }
    }
    
    /**
     * Test the get1Plural method in the GermanRegVerb class
     */
    public void testGet1Plural()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = plur1[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.get1Plural());
        }
    }
    
    /**
     * Test the get2Plural method in the GermanRegVerb class
     */
    public void testGet2Plural()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = plur2[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.get2Plural());
        }
    }
    
    /**
     * Test the get3Plural method in the GermanRegVerb class
     */
    public void testGet3Plural()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = plur3[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.get3Plural());
        }
    }
    
    /**
     * Test the getPastPart method in the GermanRegVerb class
     */
    public void testGetPastPart()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            expected = pastParts[i];
            regVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regVerb.getPastParticiple());
        }
    }
    
    /**
     * Test the conjugatePres method in the GermanRegVerb class
     */
    public void testConjugatePres()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regVerbs.length; i++)
        {
            verb = regVerbs[i];
            regVerb = new GermanRegVerb(verb);
            expected =
                "ich       " + sing1[i] + "\n" +
                "du        " + sing2[i] + "\n" +
                "er/sie/es " + sing3[i] + "\n" +
                "wir       " + plur1[i] + "\n" +
                "ihr       " + plur2[i] + "\n" +
                "sie       " + plur3[i] + "\n";
            assertEquals(verb, expected, regVerb.conjugatePres());
        }
    }    
}