package com.insightfullogic.java8.examples.chapter8; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.util.Arrays; import java.util.Collection; import static com.insightfullogic.java8.examples.chapter8.SingleResponsibilityPrinciple.*; import static org.junit.Assert.assertEquals; import static org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) public class SingleResponsibilityPrincipleTest { @Parameters public static Collection<Object[]> data() { Object[][] data = new Object[][]{ {new ImperativeRefactoredPrimeCounter()}, {new ImperativeSingleMethodPrimeCounter()}, {new FunctionalPrimeCounter()}, {new ParallelFunctionalPrimeCounter()}}; return Arrays.asList(data); } private final PrimeCounter primeCounter; public SingleResponsibilityPrincipleTest(PrimeCounter primeCounter) { this.primeCounter = primeCounter; } @Test public void countsPrimesTo10() { assertEquals(5, primeCounter.countPrimes(10)); assertEquals(9, primeCounter.countPrimes(20)); } @Test public void countsPrimesTo20() { assertEquals(9, primeCounter.countPrimes(20)); } @Test public void countsPrimesTo30() { assertEquals(11, primeCounter.countPrimes(30)); } }