import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public abstract class RandomWithParityTest { protected RandomWithParity p; @Before public abstract void setUp(); @Test public void minRange() { int actual = p.generateNumber(1); assertTrue ("Random number is 0 or 1", (actual == 0) || (actual == 1)); } @Test public void repeatedMinRange() { int actual; for (int i = 0; i< 30; i++) { actual = p.generateNumber(1); assertTrue ("Random number is 0 or 1", (actual == 0) || (actual == 1)); } } @Test public void increasingRanges(){ int actual; for (int i = 0; i< 30; i++) { actual = p.generateNumber(1+2*i); assertEquals ("Random number is even", 0, actual % 2); actual = p.generateNumber(2+2*i); assertEquals ("Random number is even", 1, actual % 2); } } @Test public void maxRange(){ int actual = p.generateNumber(Integer.MAX_VALUE); assertEquals ("Maximum range", 0, actual % 2); } @Test(timeout=100) public void largeRange(){ p.generateNumber(100000); assertTrue ("Large range", true); } }