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