package junitparams; import org.junit.Test; import org.junit.runner.RunWith; import junitparams.internal.Utils; import static junitparams.JUnitParamsRunner.*; import static junitparams.internal.Utils.*; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; @RunWith(JUnitParamsRunner.class) public class ObjectStringificationTest { @Test public void stringifyString() throws Exception { assertThat(stringify("exampleName", 0)).isEqualTo("[0] exampleName"); } @Test public void stringifyClassWithToStringAndOneParam() throws Exception { ClassWithToString obj = new ClassWithToString("exampleName"); assertThat(stringify(obj, 0)).isEqualTo("[0] exampleName"); } @Test public void stringifyClassWithToStringAndManyParams() throws Exception { ClassWithToString obj1 = new ClassWithToString("one"); ClassWithToString obj2 = new ClassWithToString("two"); assertThat(stringify(new Object[]{obj1, obj2}, 0)).isEqualTo("[0] one, two"); } @Test public void stringifyClassWithToStringInSuperclass() throws Exception { ClassWithToString obj = new ClassWithToString("exampleName"); assertThat(Utils.stringify(obj, 0)).isEqualTo("[0] exampleName"); } private class ClassWithToString { private String description; public ClassWithToString(String description) { this.description = description; } @Override public String toString() { return description; } } @Test public void stringifyArray() { Double[] nullArray = null; int[] primitiveArray = {1, 2, 3}; String[] array = {"one", "two", null}; Object[] mixed = $( $(nullArray, "stringOne", primitiveArray, "stringTwo", array) ); assertThat(Utils.stringify(mixed)).isEqualTo("null, stringOne, [1, 2, 3], stringTwo, [one, two, null]"); } @Test @Parameters public void shouldCreateParameterObjectsOnce(Object object) { assertThat(object).isInstanceOf(A.class); } public Object[] parametersForShouldCreateParameterObjectsOnce() { return new Object[]{new A()}; } static class A { static int instances = 0; String test = "test"; A() { if (++instances > 1) { fail(); } } @Override public String toString() { return "[0] exampleName" + super.toString(); } } }