001 package org.junit.runners.parameterized;
002
003 import static java.util.Collections.unmodifiableList;
004
005 import java.util.ArrayList;
006 import java.util.List;
007
008 import org.junit.runners.model.TestClass;
009
010 /**
011 * A {@code TestWithParameters} keeps the data together that are needed for
012 * creating a runner for a single data set of a parameterized test. It has a
013 * name, the test class and a list of parameters.
014 *
015 * @since 4.12
016 */
017 public class TestWithParameters {
018 private final String name;
019
020 private final TestClass testClass;
021
022 private final List<Object> parameters;
023
024 public TestWithParameters(String name, TestClass testClass,
025 List<Object> parameters) {
026 notNull(name, "The name is missing.");
027 notNull(testClass, "The test class is missing.");
028 notNull(parameters, "The parameters are missing.");
029 this.name = name;
030 this.testClass = testClass;
031 this.parameters = unmodifiableList(new ArrayList<Object>(parameters));
032 }
033
034 public String getName() {
035 return name;
036 }
037
038 public TestClass getTestClass() {
039 return testClass;
040 }
041
042 public List<Object> getParameters() {
043 return parameters;
044 }
045
046 @Override
047 public int hashCode() {
048 int prime = 14747;
049 int result = prime + name.hashCode();
050 result = prime * result + testClass.hashCode();
051 return prime * result + parameters.hashCode();
052 }
053
054 @Override
055 public boolean equals(Object obj) {
056 if (this == obj) {
057 return true;
058 }
059 if (obj == null) {
060 return false;
061 }
062 if (getClass() != obj.getClass()) {
063 return false;
064 }
065 TestWithParameters other = (TestWithParameters) obj;
066 return name.equals(other.name)
067 && parameters.equals(other.parameters)
068 && testClass.equals(other.testClass);
069 }
070
071 @Override
072 public String toString() {
073 return testClass.getName() + " '" + name + "' with parameters "
074 + parameters;
075 }
076
077 private static void notNull(Object value, String message) {
078 if (value == null) {
079 throw new NullPointerException(message);
080 }
081 }
082 }