
import static org.junit.Assert.*;
import org.junit.Before;

import org.junit.Test;

public class testModPower {
	
	@Before
	public void doNothing() {
		// Do a few computations before running tests so the first one doesn't time out.
		ModPower.compute(1, 5, 20);
		ModPower.compute(10, 5500, 2000);	
	}
	
	@Test(timeout=1)
	public void test01() {
		assertEquals (1, ModPower.compute(1, 5, 20));
	}
	
	@Test(timeout=1)
	public void test02() {
		assertEquals (1, ModPower.compute(1, 50, 30));
	}
	
	@Test(timeout=1)
	public void test03() {
		assertEquals (64, ModPower.compute(2, 6, 75));
	}
	
	@Test(timeout=1)
	public void test04() {
		assertEquals (1, ModPower.compute(2, 20, 75));
	}

	@Test(timeout=1)
	public void test05() {
		assertEquals (49, ModPower.compute(2, 50, 75));
	}

	@Test(timeout=1)
	public void test06() {
		assertEquals (24, ModPower.compute(33, 50, 75));
	}

	@Test(timeout=1)
	public void test07() {
		assertEquals (1, ModPower.compute(2, 500, 75));
	}

	@Test(timeout=1)
	public void test08() {
		assertEquals (51, ModPower.compute(33,5000, 75));
	}

	@Test(timeout=1)
	public void test09() {
		assertEquals (5395589, ModPower.compute(33,50000, 8675309));
	}

	@Test(timeout=1)
	public void test10() {
		assertEquals (3246594, ModPower.compute(33,500000, 8675309));
	}
	
	@Test(timeout=1)
	public void test11() {
		assertEquals (1, ModPower.compute(33,8675308, 8675309));
	}

	@Test(timeout=1)
	public void test12() {
		assertEquals (93757, ModPower.compute(1234567,87654321 , 111111));
	}

	@Test(timeout=1)
	public void test13() {
		assertEquals (12346, ModPower.compute(1234567,1987654321 , 111111));
	}
}
