1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.builder;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20
21 import java.util.ArrayList;
22 import java.util.HashMap;
23
24 import org.apache.commons.lang3.AbstractLangTest;
25 import org.junit.jupiter.api.AfterEach;
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.api.Test;
28
29
30
31
32 public class RecursiveToStringStyleTest extends AbstractLangTest {
33
34 static class Job {
35
36
37
38 String title;
39 }
40 static class Person {
41
42
43
44 String name;
45
46
47
48
49 int age;
50
51
52
53
54 boolean smoker;
55
56
57
58
59 Job job;
60 }
61
62 private final Integer base = Integer.valueOf(5);
63
64 private final String baseStr = base.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(base));
65
66 @BeforeEach
67 public void setUp() {
68 ToStringBuilder.setDefaultStyle(new RecursiveToStringStyle());
69 }
70
71 @AfterEach
72 public void tearDown() {
73 ToStringBuilder.setDefaultStyle(ToStringStyle.DEFAULT_STYLE);
74 }
75
76 @Test
77 public void testAppendSuper() {
78 assertEquals(baseStr + "[]", new ToStringBuilder(base).appendSuper("Integer@8888[]").toString());
79 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).appendSuper("Integer@8888[<null>]").toString());
80
81 assertEquals(baseStr + "[a=hello]", new ToStringBuilder(base).appendSuper("Integer@8888[]").append("a", "hello").toString());
82 assertEquals(baseStr + "[<null>,a=hello]", new ToStringBuilder(base).appendSuper("Integer@8888[<null>]").append("a", "hello").toString());
83 assertEquals(baseStr + "[a=hello]", new ToStringBuilder(base).appendSuper(null).append("a", "hello").toString());
84 }
85
86 @Test
87 public void testBlank() {
88 assertEquals(baseStr + "[]", new ToStringBuilder(base).toString());
89 }
90
91 @Test
92 public void testLong() {
93 assertEquals(baseStr + "[3]", new ToStringBuilder(base).append(3L).toString());
94 assertEquals(baseStr + "[a=3]", new ToStringBuilder(base).append("a", 3L).toString());
95 assertEquals(baseStr + "[a=3,b=4]", new ToStringBuilder(base).append("a", 3L).append("b", 4L).toString());
96 }
97
98 @Test
99 public void testLongArray() {
100 long[] array = {1, 2, -3, 4};
101 assertEquals(baseStr + "[{1,2,-3,4}]", new ToStringBuilder(base).append(array).toString());
102 assertEquals(baseStr + "[{1,2,-3,4}]", new ToStringBuilder(base).append((Object) array).toString());
103 array = null;
104 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append(array).toString());
105 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) array).toString());
106 }
107
108 @Test
109 public void testLongArrayArray() {
110 long[][] array = {{1, 2}, null, {5}};
111 assertEquals(baseStr + "[{{1,2},<null>,{5}}]", new ToStringBuilder(base).append(array).toString());
112 assertEquals(baseStr + "[{{1,2},<null>,{5}}]", new ToStringBuilder(base).append((Object) array).toString());
113 array = null;
114 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append(array).toString());
115 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) array).toString());
116 }
117
118 @Test
119 public void testObject() {
120 final Integer i3 = Integer.valueOf(3);
121 final Integer i4 = Integer.valueOf(4);
122 final ArrayList<Object> emptyList = new ArrayList<>();
123
124 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) null).toString());
125 assertEquals(baseStr + "[3]", new ToStringBuilder(base).append(i3).toString());
126 assertEquals(baseStr + "[a=<null>]", new ToStringBuilder(base).append("a", (Object) null).toString());
127 assertEquals(baseStr + "[a=3]", new ToStringBuilder(base).append("a", i3).toString());
128 assertEquals(baseStr + "[a=3,b=4]", new ToStringBuilder(base).append("a", i3).append("b", i4).toString());
129 assertEquals(baseStr + "[a=<Integer>]", new ToStringBuilder(base).append("a", i3, false).toString());
130 assertEquals(baseStr + "[a=<size=0>]", new ToStringBuilder(base).append("a", emptyList, false).toString());
131 assertEquals(baseStr + "[a=java.util.ArrayList@" + Integer.toHexString(System.identityHashCode(emptyList)) + "{}]",
132 new ToStringBuilder(base).append("a", emptyList, true).toString());
133 assertEquals(baseStr + "[a=<size=0>]", new ToStringBuilder(base).append("a", new HashMap<>(), false).toString());
134 assertEquals(baseStr + "[a={}]", new ToStringBuilder(base).append("a", new HashMap<>(), true).toString());
135 assertEquals(baseStr + "[a=<size=0>]", new ToStringBuilder(base).append("a", (Object) new String[0], false).toString());
136 assertEquals(baseStr + "[a={}]", new ToStringBuilder(base).append("a", (Object) new String[0], true).toString());
137 }
138
139 @Test
140 public void testObjectArray() {
141 Object[] array = {null, base, new int[] {3, 6}};
142 assertEquals(baseStr + "[{<null>,5,{3,6}}]", new ToStringBuilder(base).append(array).toString());
143 assertEquals(baseStr + "[{<null>,5,{3,6}}]", new ToStringBuilder(base).append((Object) array).toString());
144 array = null;
145 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append(array).toString());
146 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) array).toString());
147 }
148
149 @Test
150 public void testPerson() {
151 final Person p = new Person();
152 p.name = "John Doe";
153 p.age = 33;
154 p.smoker = false;
155 p.job = new Job();
156 p.job.title = "Manager";
157 final String pBaseStr = p.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(p));
158 final String pJobStr = p.job.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(p.job));
159 assertEquals(pBaseStr + "[age=33,job=" + pJobStr + "[title=Manager],name=John Doe,smoker=false]",
160 new ReflectionToStringBuilder(p, new RecursiveToStringStyle()).toString());
161 }
162
163 }