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