import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; public class RandomWithParityTest { private RandomWithParity p; @Before public void setUp() { p = new UnfilteredRandom(); } @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); } }