package junitparams.custom.combined; import java.util.LinkedList; import java.util.List; import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; import junitparams.JUnitParamsRunner; import static org.assertj.core.api.Assertions.*; @RunWith(JUnitParamsRunner.class) public class CombinedParametersProviderTest { private static Verifier verifier = new Verifier(); @Test @CombinedParameters({"a,b", "1,2"}) public void calledWithCartesianProduct(String character, String number) { verifier.called(character, number); } @AfterClass public static void verify() { assertThat(verifier.getCalls()).containsOnly( new Verifier.Call("a", "1"), new Verifier.Call("b", "1"), new Verifier.Call("a", "2"), new Verifier.Call("b", "2") ); } private static class Verifier { private List<Call> calls = new LinkedList<Call>(); void called(String firstParam, String anotherParam){ calls.add(new Call(firstParam, anotherParam)); } List<Call> getCalls() { return calls; } private static class Call { private final String firstParam; private final String anotherParam; Call(String firstParam, String anotherParam) { this.firstParam = firstParam; this.anotherParam = anotherParam; } @Override public String toString() { return "Call{" + "'" + firstParam + '\'' + ",'" + anotherParam + '\'' + '}'; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Call call = (Call) o; return firstParam.equals(call.firstParam) && anotherParam.equals(call.anotherParam); } @Override public int hashCode() { int result = firstParam.hashCode(); result = 31 * result + anotherParam.hashCode(); return result; } } } }