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 TestLoops extends TestCase {
    
    
    public void testE1s() {
        int x= 2*3*4*5*6*7*8*9*10;
        assertEquals(x , LoopExercises.E1a());
        assertEquals(x , LoopExercises.E1b());
        assertEquals(x , LoopExercises.E1c());
        assertEquals(x , LoopExercises.E1d());
    }
    
    public void testE2s() {
        int x= 2*3*4*5*6*7*8*9*10;
        assertEquals(false , LoopExercises.E2a(5, 2,2));
        assertEquals(true , LoopExercises.E2a(10, 2,2));
        assertEquals(false , LoopExercises.E2a(101, 2,10));
        assertEquals(true , LoopExercises.E2a(20, 3,10));
        
        assertEquals(false , LoopExercises.E2b(5, 2,2));
        assertEquals(true , LoopExercises.E2b(10, 2,2));
        assertEquals(false , LoopExercises.E2b(101, 2,10));
        assertEquals(true , LoopExercises.E2b(20, 3,10));
        
        assertEquals(false , LoopExercises.E2c(5, 2,2));
        assertEquals(true , LoopExercises.E2c(10, 2,2));
        assertEquals(false , LoopExercises.E2c(101, 2,10));
        assertEquals(true , LoopExercises.E2c(20, 3,10));
 
    
        assertEquals(false , LoopExercises.E2d(5, 2,2));
        assertEquals(true , LoopExercises.E2d(10, 2,2));
        assertEquals(false , LoopExercises.E2d(101, 2,10));
        assertEquals(true , LoopExercises.E2d(20, 3,10));
   }
    
    public void testE3() {
        assertEquals(0 , LoopExercises.E3(1));
        assertEquals(1 , LoopExercises.E3(2));
        assertEquals(1 , LoopExercises.E3(3));
        assertEquals(2 , LoopExercises.E3(4));
        assertEquals(2 , LoopExercises.E3(5));
        assertEquals(2 , LoopExercises.E3(6));
        assertEquals(2 , LoopExercises.E3(7));
        assertEquals(3 , LoopExercises.E3(8));
        assertEquals(3 , LoopExercises.E3(9));
        assertEquals(5 , LoopExercises.E3(63));
        assertEquals(6 , LoopExercises.E3(64));
        assertEquals(6 , LoopExercises.E3(65)); 
        
    }
   
    public void testE4() {
        assertEquals(0 , LoopExercises.E4a(0,1));
        assertEquals(1 , LoopExercises.E4a(1,1));
        assertEquals(4 , LoopExercises.E4a(30,7));
        assertEquals(5 , LoopExercises.E4a(30,6));
        assertEquals(6 , LoopExercises.E4a(30,5));
        assertEquals(7 , LoopExercises.E4a(30,4));
        assertEquals(10, LoopExercises.E4a(30,3));
        assertEquals(0 , LoopExercises.E4a(30,1001));
        
        assertEquals(0 , LoopExercises.E4b(0,1));
        assertEquals(0 , LoopExercises.E4b(1,1));
        assertEquals(2 , LoopExercises.E4b(30,7));
        assertEquals(0 , LoopExercises.E4b(30,6));
        assertEquals(0 , LoopExercises.E4b(30,5));
        assertEquals(2 , LoopExercises.E4b(30,4));
        assertEquals(0,  LoopExercises.E4b(30,3));
        assertEquals(30, LoopExercises.E4b(30,1001));
    }
    
    public void testE5() {
        assertEquals(1 , LoopExercises.E5(1,1));
        assertEquals(51 , LoopExercises.E5(51,51));
        assertEquals(1 , LoopExercises.E5(101,89));
        assertEquals(1 , LoopExercises.E5(5,6));
        assertEquals(2 , LoopExercises.E5(4,6));
        assertEquals(3 , LoopExercises.E5(3,6));
        assertEquals(27 , LoopExercises.E5(54,27*5));
        assertEquals(2 , LoopExercises.E5(54,104));
    }
    
    public void testE6() {
        assertEquals("nmls r wndrfl" , LoopExercises.E6("Animals are wonderful"));
        assertEquals("" , LoopExercises.E6(""));
        assertEquals("" , LoopExercises.E6("A"));
        assertEquals("c" , LoopExercises.E6("c"));
        assertEquals("12345$" , LoopExercises.E6("AaEeIiOoUu12345$")); 
    }
    
    public void testE7() {
        assertEquals(true , LoopExercises.E7("ACGTTAC", "TGCAATG"));
        assertEquals(true , LoopExercises.E7("", ""));
        assertEquals(true , LoopExercises.E7("A", "T"));
        assertEquals(false, LoopExercises.E7("ACGTTAC", "GGCAATG"));
        assertEquals(false , LoopExercises.E7("ACGTTAC", "TGCAAGG"));
        assertEquals(false , LoopExercises.E7("ACGTTACG", "TGCAATG"));
        assertEquals(false , LoopExercises.E7("A", "A"));
        assertEquals(false , LoopExercises.E7("T", "T"));
        assertEquals(false , LoopExercises.E7("C", "C"));
        assertEquals(false , LoopExercises.E7("G", "G"));
               
    }
    
    public void testE8() {
        assertEquals("TGCAATG", LoopExercises.E8("ACGTTAC"));
        assertEquals("" , LoopExercises.E8(""));
               
    }
    
}
