blob: b8156e9fbd7b771ee078464a553665a71be75c2d [file] [log] [blame]
package org.junit.runners.parameterized;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.rules.ExpectedException.none;
import java.util.Arrays;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runners.model.TestClass;
public class TestWithParametersTest {
private static final String DUMMY_NAME = "dummy name";
private static final TestClass DUMMY_TEST_CLASS = new TestClass(
DummyClass.class);
private static final List<Object> DUMMY_PARAMETERS = Arrays
.<Object> asList("a", "b");
@Rule
public final ExpectedException thrown = none();
@Test
public void cannotBeCreatedWithoutAName() {
thrown.expect(NullPointerException.class);
thrown.expectMessage("The name is missing.");
new TestWithParameters(null, DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
}
@Test
public void cannotBeCreatedWithoutTestClass() {
thrown.expect(NullPointerException.class);
thrown.expectMessage("The test class is missing.");
new TestWithParameters(DUMMY_NAME, null, DUMMY_PARAMETERS);
}
@Test
public void cannotBeCreatedWithoutParameters() {
thrown.expect(NullPointerException.class);
thrown.expectMessage("The parameters are missing.");
new TestWithParameters(DUMMY_NAME, DUMMY_TEST_CLASS,
(List<Object>) null);
}
@Test
public void doesNotAllowToModifyProvidedParameters() {
TestWithParameters test = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
thrown.expect(UnsupportedOperationException.class);
test.getParameters().set(0, "another parameter");
}
@Test
public void doesNotConsiderParametersWhichChangedAfterTestInstantiation() {
List<Object> parameters = Arrays.<Object> asList("dummy parameter");
TestWithParameters test = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, parameters);
parameters.set(0, "another parameter");
assertEquals(asList("dummy parameter"), test.getParameters());
}
@Test
public void isEqualToTestWithSameNameAndTestClassAndParameters() {
TestWithParameters firstTest = new TestWithParameters(DUMMY_NAME,
new TestClass(DummyClass.class), Arrays.<Object> asList("a",
"b"));
TestWithParameters secondTest = new TestWithParameters(DUMMY_NAME,
new TestClass(DummyClass.class), Arrays.<Object> asList("a",
"b"));
assertEquals(firstTest, secondTest);
}
@Test
public void isNotEqualToTestWithDifferentName() {
TestWithParameters firstTest = new TestWithParameters("name",
DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
TestWithParameters secondTest = new TestWithParameters("another name",
DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
assertNotEquals(firstTest, secondTest);
}
@Test
public void isNotEqualToTestWithDifferentTestClass() {
TestWithParameters firstTest = new TestWithParameters(DUMMY_NAME,
new TestClass(DummyClass.class), DUMMY_PARAMETERS);
TestWithParameters secondTest = new TestWithParameters(DUMMY_NAME,
new TestClass(AnotherDummyClass.class), DUMMY_PARAMETERS);
assertNotEquals(firstTest, secondTest);
}
@Test
public void isNotEqualToTestWithDifferentParameters() {
TestWithParameters firstTest = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, Arrays.<Object> asList("a"));
TestWithParameters secondTest = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, Arrays.<Object> asList("b"));
assertNotEquals(firstTest, secondTest);
}
@Test
public void isNotEqualToObjectWithDifferentClass() {
TestWithParameters test = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
assertNotEquals(test, new Integer(3));
}
@Test
public void hasSameHashCodeAsEqualTest() {
TestWithParameters firstTest = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
TestWithParameters secondTest = new TestWithParameters(DUMMY_NAME,
DUMMY_TEST_CLASS, DUMMY_PARAMETERS);
assertEquals(firstTest.hashCode(), secondTest.hashCode());
}
@Test
public void hasMeaningfulToString() {
TestWithParameters test = new TestWithParameters("name", new TestClass(
DummyClass.class), Arrays.<Object> asList("first parameter",
"second parameter"));
assertEquals(
"Wrong toString().",
"org.junit.runners.parameterized.TestWithParametersTest$DummyClass 'name' with parameters [first parameter, second parameter]",
test.toString());
}
private static class DummyClass {
}
private static class AnotherDummyClass {
}
}