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 StringRecursionTester extends TestCase {
    
    public void testLen() {
        assertEquals(0,  StringRecursion.len(""));
        assertEquals(1,  StringRecursion.len("b"));
        assertEquals(3,  StringRecursion.len("abb"));
        assertEquals(10, StringRecursion.len("9876543210"));
    }
    
    public void testNumEs() {
        assertEquals(0,  StringRecursion.numEs(""));
        assertEquals(1,  StringRecursion.numEs("e"));
        assertEquals(0,  StringRecursion.numEs("c"));
        assertEquals(2,  StringRecursion.numEs("ceceddd"));
        assertEquals(0,  StringRecursion.numEs("asdfasdfadsf"));
    }
    
    public void testDeblank() {
        assertEquals("",  StringRecursion.deblank(""));
        assertEquals("",  StringRecursion.deblank(" "));
        assertEquals("B",  StringRecursion.deblank("B"));
        assertEquals("BG", StringRecursion.deblank("B G"));
        assertEquals("",   StringRecursion.deblank("         "));
        
        assertEquals("", StringRecursion.depunct("(@$*&@"));
        assertEquals("foo", StringRecursion.depunct("  f,o**o!!!"));
        assertEquals("foo", StringRecursion.depunct("f  (!*@&,.<>:'  oo"));
    }
    
    public void testIsPal() {
        assertEquals(true,  StringRecursion.isPal(""));
        assertEquals(true,  StringRecursion.isPal("B"));
        assertEquals(true,  StringRecursion.isPal("BB"));
        assertEquals(false, StringRecursion.isPal("BA"));
        assertEquals(true,  StringRecursion.isPal("BOB"));
        assertEquals(false, StringRecursion.isPal("BOA"));
        assertEquals(true,  StringRecursion.isPal("ablewasiereisawelba"));
        assertEquals(true,  StringRecursion.isPal("amanaplanacanalpanama"));
        assertEquals(true,  StringRecursion.isPal("Amanaplanacanalpanama"));
        assertEquals(false, StringRecursion.isPal("amanaplana canalpanama"));
        
        assertEquals(true,  StringRecursion.isPal2(""));
        assertEquals(true,  StringRecursion.isPal2("B"));
        assertEquals(true,  StringRecursion.isPal2("BB"));
        assertEquals(false, StringRecursion.isPal2("BA"));
        assertEquals(true,  StringRecursion.isPal2("BOB"));
        assertEquals(false, StringRecursion.isPal2("BOA"));
        assertEquals(true,  StringRecursion.isPal2("ablewasiereisawelba"));
        assertEquals(true,  StringRecursion.isPal2("amanaplanacanalpanama"));
        assertEquals(true,  StringRecursion.isPal2("Amanaplanacanalpanama"));
        assertEquals(false, StringRecursion.isPal2("amanaplana canalpanama"));
        
        assertEquals(true,  StringRecursion.isPalLoosely("A man, a plan, a canal --Panama!"));
        assertEquals(false, StringRecursion.isPalLoosely("A man, a plan, a cabal --Panama!"));           
    }
    
}