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 GermanRegVerbTest2 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 String[] regSepVerbs = {"mitspielen", "zusagen", "zusammenmachen", "anprobieren", "abarbeiten"};
    private String[] prefixes = {"mit", "zu", "zusammen", "an", "ab"};
    private String[] sepPastParts = {"mitgespielt", "zugesagt", "zusammengemacht", "anprobiert", "abgearbeitet"};
    private String[] sepSing1 = {"spiele mit", "sage zu", "mache zusammen", "probiere an", "arbeite ab"};
    private String[] sepSing2 = {"spielst mit", "sagst zu", "machst zusammen", "probierst an", "arbeitest ab"};
    private String[] sepSing3 = {"spielt mit", "sagt zu", "macht zusammen", "probiert an", "arbeitet ab"};
    private String[] sepPlur1 = {"spielen mit", "sagen zu", "machen zusammen", "probieren an", "arbeiten ab"};
    private String[] sepPlur2 = {"spielt mit", "sagt zu", "macht zusammen", "probiert an", "arbeitet ab"};
    private String[] sepPlur3 = {"spielen mit", "sagen zu", "machen zusammen", "probieren an", "arbeiten ab"};
    
    private GermanRegVerb regSepVerb;    
    private GermanRegVerb regVerb;
    

    /**
     * Test the getStem method in the GermanRegVerb class
     */
    public void testGetStemNonSep()
    {
        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 getStem method in the GermanRegVerb class - separable
     */
    public void testGetStemSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = stems[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.getStem());
        }
    }
    
    /**
     * Test the get1Sing method in the GermanRegVerb class
     */
    public void testGet1SingNonSep()
    {
        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 get1Sing method in the GermanRegVerb class - separable
     */
    public void testGet1SingSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepSing1[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.get1Sing());
        }
    }
    
    /**
     * Test the get2Sing method in the GermanRegVerb class
     */
    public void testGet2SingNonSep()
    {
        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 get2Sing method in the GermanRegVerb class - separable
     */
    public void testGet2SingSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepSing2[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.get2Sing());
        }
    }
    
    /**
     * Test the get3Sing method in the GermanRegVerb class
     */
    public void testGet3SingNonSep()
    {
        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 get3Sing method in the GermanRegVerb class - separable
     */
    public void testGet3SingSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepSing3[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.get3Sing());
        }
    }
    
    /**
     * Test the get1Plural method in the GermanRegVerb class
     */
    public void testGet1PluralNonSep()
    {
        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 get1Plural method in the GermanRegVerb class - separable
     */
    public void testGet1PluralSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepPlur1[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.get1Plural());
        }
    }
    
    /**
     * Test the get2Plural method in the GermanRegVerb class
     */
    public void testGet2PluralNonSep()
    {
        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 get2Plural method in the GermanRegVerb class - separable
     */
    public void testGet2PluralSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepPlur2[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.get2Plural());
        }
    }
    
    /**
     * Test the get3Plural method in the GermanRegVerb class
     */
    public void testGet3PluralNonSep()
    {
        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 get3Plural method in the GermanRegVerb class - separable
     */
    public void testGet3PluralSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepPlur3[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.get3Plural());
        }
    }
    
    /**
     * Test the getPastPart method in the GermanRegVerb class
     */
    public void testGetPastPartNonSep()
    {
        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 getPastPart method in the GermanRegVerb class - separable
     */
    public void testGetPastPartSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            expected = sepPastParts[i];
            regSepVerb = new GermanRegVerb(verb);
            assertEquals(verb, expected, regSepVerb.getPastParticiple());
        }
    }
    
    /**
     * Test the conjugatePres method in the GermanRegVerb class
     */
    public void testConjugatePresNonSep()
    {
        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());
        }
    }    
    
    /**
     * Test the conjugatePres method in the GermanRegVerb class - separable
     */
    public void testConjugatePresSep()
    {
        String expected;
        String verb;
        
        for (int i=0; i < regSepVerbs.length; i++)
        {
            verb = regSepVerbs[i];
            regSepVerb = new GermanRegVerb(verb);
            expected =
                "ich       " + sepSing1[i] + "\n" +
                "du        " + sepSing2[i] + "\n" +
                "er/sie/es " + sepSing3[i] + "\n" +
                "wir       " + sepPlur1[i] + "\n" +
                "ihr       " + sepPlur2[i] + "\n" +
                "sie       " + sepPlur3[i] + "\n";
            assertEquals(verb, expected, regSepVerb.conjugatePres());
        }
    }    
}