package junitspec; 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 = this.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 = this.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 = this.p.generateNumber(1+2*i); assertTrue ("Random number is even", (actual % 2 == 0)); actual = this.p.generateNumber(2+2*i); assertTrue ("Random number is even", (actual % 2 == 1)); } } @Test public void maxRange(){ int actual = this.p.generateNumber(Integer.MAX_VALUE); assertTrue ("Maximum range", actual % 2 == 0); } @Test(timeout=100) public void largeRange(){ int actual = this.p.generateNumber(100000); actual--; //avoid unused variable warning assertTrue ("Large range", true); } }