1fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinpackage junitparams; 2fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 3fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport org.junit.Test; 4fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport org.junit.runner.RunWith; 5fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 6fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport junitparams.internal.Utils; 7fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 8fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport static junitparams.JUnitParamsRunner.*; 9fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport static junitparams.internal.Utils.*; 10fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport static org.assertj.core.api.Assertions.assertThat; 11fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport static org.junit.Assert.fail; 12fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 13fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 14fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin@RunWith(JUnitParamsRunner.class) 15fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinpublic class ObjectStringificationTest { 16fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 17fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Test 18fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public void stringifyString() throws Exception { 19fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin assertThat(stringify("exampleName", 0)).isEqualTo("[0] exampleName"); 20fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 21fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 22fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Test 23fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public void stringifyClassWithToStringAndOneParam() throws Exception { 24fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin ClassWithToString obj = new ClassWithToString("exampleName"); 25fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 26fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin assertThat(stringify(obj, 0)).isEqualTo("[0] exampleName"); 27fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 28fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 29fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Test 30fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public void stringifyClassWithToStringAndManyParams() throws Exception { 31fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin ClassWithToString obj1 = new ClassWithToString("one"); 32fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin ClassWithToString obj2 = new ClassWithToString("two"); 33fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 34fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin assertThat(stringify(new Object[]{obj1, obj2}, 0)).isEqualTo("[0] one, two"); 35fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 36fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 37fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Test 38fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public void stringifyClassWithToStringInSuperclass() throws Exception { 39fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin ClassWithToString obj = new ClassWithToString("exampleName"); 40fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 41fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin assertThat(Utils.stringify(obj, 0)).isEqualTo("[0] exampleName"); 42fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 43fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 44fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin private class ClassWithToString { 45fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin private String description; 46fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 47fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public ClassWithToString(String description) { 48fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin this.description = description; 49fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 50fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 51fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Override 52fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public String toString() { 53fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin return description; 54fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 55fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 56fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 57fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Test 58fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public void stringifyArray() { 59fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin Double[] nullArray = null; 60fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin int[] primitiveArray = {1, 2, 3}; 61fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin String[] array = {"one", "two", null}; 62fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin Object[] mixed = $( 63fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin $(nullArray, "stringOne", primitiveArray, "stringTwo", array) 64fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin ); 65fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 66fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin assertThat(Utils.stringify(mixed)).isEqualTo("null, stringOne, [1, 2, 3], stringTwo, [one, two, null]"); 67fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 68fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 69fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Test 70fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Parameters 71fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public void shouldCreateParameterObjectsOnce(Object object) { 72fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin assertThat(object).isInstanceOf(A.class); 73fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 74fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 75fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public Object[] parametersForShouldCreateParameterObjectsOnce() { 76fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin return new Object[]{new A()}; 77fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 78fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 79fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin static class A { 80fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin static int instances = 0; 81fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin String test = "test"; 82fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 83fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin A() { 84fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin if (++instances > 1) { 85fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin fail(); 86fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 87fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 88fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin 89fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin @Override 90fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin public String toString() { 91fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin return "[0] exampleName" + super.toString(); 92fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 93fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin } 94fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin} 95