TestWithParameters.java revision aeb93fc33cae3aadbb9b46083350ad2dc9aea645
1aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinpackage org.junit.runners.parameterized; 2aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 3aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinimport static java.util.Collections.unmodifiableList; 4aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 5aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinimport java.util.ArrayList; 6aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinimport java.util.List; 7aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 8aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinimport org.junit.runners.model.TestClass; 9aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 10aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin/** 11aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * A {@code TestWithParameters} keeps the data together that are needed for 12aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * creating a runner for a single data set of a parameterized test. It has a 13aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * name, the test class and a list of parameters. 14aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * 15aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin * @since 4.12 16aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin */ 17aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffinpublic class TestWithParameters { 18aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin private final String name; 19aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 20aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin private final TestClass testClass; 21aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 22aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin private final List<Object> parameters; 23aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 24aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public TestWithParameters(String name, TestClass testClass, 25aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin List<Object> parameters) { 26aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin notNull(name, "The name is missing."); 27aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin notNull(testClass, "The test class is missing."); 28aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin notNull(parameters, "The parameters are missing."); 29aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin this.name = name; 30aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin this.testClass = testClass; 31aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin this.parameters = unmodifiableList(new ArrayList<Object>(parameters)); 32aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 33aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 34aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public String getName() { 35aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return name; 36aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 37aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 38aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public TestClass getTestClass() { 39aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return testClass; 40aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 41aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 42aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public List<Object> getParameters() { 43aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return parameters; 44aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 45aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 46aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin @Override 47aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public int hashCode() { 48aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin int prime = 14747; 49aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin int result = prime + name.hashCode(); 50aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin result = prime * result + testClass.hashCode(); 51aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return prime * result + parameters.hashCode(); 52aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 53aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 54aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin @Override 55aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public boolean equals(Object obj) { 56aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin if (this == obj) { 57aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return true; 58aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 59aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin if (obj == null) { 60aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return false; 61aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 62aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin if (getClass() != obj.getClass()) { 63aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return false; 64aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 65aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin TestWithParameters other = (TestWithParameters) obj; 66aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return name.equals(other.name) 67aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin && parameters.equals(other.parameters) 68aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin && testClass.equals(other.testClass); 69aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 70aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 71aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin @Override 72aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin public String toString() { 73aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin return testClass.getName() + " '" + name + "' with parameters " 74aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin + parameters; 75aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 76aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin 77aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin private static void notNull(Object value, String message) { 78aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin if (value == null) { 79aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin throw new NullPointerException(message); 80aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 81aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin } 82aeb93fc33cae3aadbb9b46083350ad2dc9aea645Paul Duffin} 83