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 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.util.Arrays;
24 import java.util.Collections;
25
26 import org.apache.commons.lang3.AbstractLangTest;
27 import org.apache.commons.lang3.builder.ToStringStyleTest.Person;
28 import org.junit.jupiter.api.AfterEach;
29 import org.junit.jupiter.api.BeforeEach;
30 import org.junit.jupiter.api.Test;
31
32
33
34
35 public class StandardToStringStyleTest extends AbstractLangTest {
36
37 private static final StandardToStringStyle STYLE = new StandardToStringStyle();
38 static {
39 STYLE.setUseShortClassName(true);
40 STYLE.setUseIdentityHashCode(false);
41 STYLE.setArrayStart("[");
42 STYLE.setArraySeparator(", ");
43 STYLE.setArrayEnd("]");
44 STYLE.setNullText("%NULL%");
45 STYLE.setSizeStartText("%SIZE=");
46 STYLE.setSizeEndText("%");
47 STYLE.setSummaryObjectStartText("%");
48 STYLE.setSummaryObjectEndText("%");
49 STYLE.setUseClassName(true);
50 STYLE.setUseFieldNames(true);
51 STYLE.setUseClassName(true);
52 STYLE.setUseFieldNames(true);
53 STYLE.setDefaultFullDetail(true);
54 STYLE.setArrayContentDetail(true);
55 STYLE.setFieldNameValueSeparator("=");
56 }
57
58 private final Integer base = Integer.valueOf(5);
59
60 private final String baseStr = "Integer";
61
62 @BeforeEach
63 public void setUp() {
64 ToStringBuilder.setDefaultStyle(STYLE);
65 }
66
67 @AfterEach
68 public void tearDown() {
69 ToStringBuilder.setDefaultStyle(ToStringStyle.DEFAULT_STYLE);
70 }
71
72 @Test
73 public void testAppendSuper() {
74 assertEquals(baseStr + "[]", new ToStringBuilder(base).appendSuper("Integer@8888[]").toString());
75 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).appendSuper("Integer@8888[%NULL%]").toString());
76
77 assertEquals(baseStr + "[a=hello]", new ToStringBuilder(base).appendSuper("Integer@8888[]").append("a", "hello").toString());
78 assertEquals(baseStr + "[%NULL%,a=hello]", new ToStringBuilder(base).appendSuper("Integer@8888[%NULL%]").append("a", "hello").toString());
79 assertEquals(baseStr + "[a=hello]", new ToStringBuilder(base).appendSuper(null).append("a", "hello").toString());
80 }
81
82 @Test
83 public void testArray() {
84 final Integer i3 = Integer.valueOf(3);
85 final Integer i4 = Integer.valueOf(4);
86 assertEquals(baseStr + "[a=%SIZE=0%]", new ToStringBuilder(base).append("a", (Object) new Integer[0], false).toString());
87 assertEquals(baseStr + "[a=[]]", new ToStringBuilder(base).append("a", (Object) new Integer[0], true).toString());
88 assertEquals(baseStr + "[a=%SIZE=1%]", new ToStringBuilder(base).append("a", (Object) new Integer[] {i3}, false).toString());
89 assertEquals(baseStr + "[a=[3]]", new ToStringBuilder(base).append("a", (Object) new Integer[] {i3}, true).toString());
90 assertEquals(baseStr + "[a=%SIZE=2%]", new ToStringBuilder(base).append("a", (Object) new Integer[] {i3, i4}, false).toString());
91 assertEquals(baseStr + "[a=[3, 4]]", new ToStringBuilder(base).append("a", (Object) new Integer[] {i3, i4}, true).toString());
92 }
93
94 @Test
95 public void testBlank() {
96 assertEquals(baseStr + "[]", new ToStringBuilder(base).toString());
97 }
98
99 @Test
100 public void testCollection() {
101 final Integer i3 = Integer.valueOf(3);
102 final Integer i4 = Integer.valueOf(4);
103 assertEquals(baseStr + "[a=%SIZE=0%]", new ToStringBuilder(base).append("a", Collections.emptyList(), false).toString());
104 assertEquals(baseStr + "[a=[]]", new ToStringBuilder(base).append("a", Collections.emptyList(), true).toString());
105 assertEquals(baseStr + "[a=%SIZE=1%]", new ToStringBuilder(base).append("a", Collections.singletonList(i3), false).toString());
106 assertEquals(baseStr + "[a=[3]]", new ToStringBuilder(base).append("a", Collections.singletonList(i3), true).toString());
107 assertEquals(baseStr + "[a=%SIZE=2%]", new ToStringBuilder(base).append("a", Arrays.asList(i3, i4), false).toString());
108 assertEquals(baseStr + "[a=[3, 4]]", new ToStringBuilder(base).append("a", Arrays.asList(i3, i4), true).toString());
109 }
110
111 @Test
112 public void testDefaultGetter() {
113 assertEquals("[", STYLE.getContentStart());
114 assertEquals("]", STYLE.getContentEnd());
115 assertEquals("=", STYLE.getFieldNameValueSeparator());
116 assertEquals(",", STYLE.getFieldSeparator());
117 assertEquals("%NULL%", STYLE.getNullText());
118 assertEquals("%SIZE=", STYLE.getSizeStartText());
119 assertEquals("%", STYLE.getSizeEndText());
120 assertEquals("%", STYLE.getSummaryObjectStartText());
121 assertEquals("%", STYLE.getSummaryObjectEndText());
122 }
123
124 @Test
125 public void testDefaultIsArrayContentDetail() {
126 assertTrue((new StandardToStringStyle()).isArrayContentDetail());
127 }
128
129 @Test
130 public void testDefaultIsFieldSeparatorAtEnd() {
131 assertFalse((new StandardToStringStyle()).isFieldSeparatorAtEnd());
132 }
133
134 @Test
135 public void testDefaultIsFieldSeparatorAtStart() {
136 assertFalse((new StandardToStringStyle()).isFieldSeparatorAtStart());
137 }
138
139 @Test
140 public void testDefaultValueOfFullDetail() {
141 assertTrue((new StandardToStringStyle()).isDefaultFullDetail());
142 }
143
144 @Test
145 public void testDefaultValueOfUseClassName() {
146 assertTrue((new StandardToStringStyle()).isUseClassName());
147 }
148
149 @Test
150 public void testDefaultValueOfUseFieldNames() {
151 assertTrue((new StandardToStringStyle()).isUseFieldNames());
152 }
153
154 @Test
155 public void testDefaultValueOfUseIdentityHashCode() {
156 assertTrue((new StandardToStringStyle()).isUseIdentityHashCode());
157 }
158
159 @Test
160 public void testDefaultValueOfUseShortClassName() {
161 assertFalse((new StandardToStringStyle()).isUseShortClassName());
162 }
163
164 @Test
165 public void testLong() {
166 assertEquals(baseStr + "[3]", new ToStringBuilder(base).append(3L).toString());
167 assertEquals(baseStr + "[a=3]", new ToStringBuilder(base).append("a", 3L).toString());
168 assertEquals(baseStr + "[a=3,b=4]", new ToStringBuilder(base).append("a", 3L).append("b", 4L).toString());
169 }
170
171 @Test
172 public void testLongArray() {
173 long[] array = {1, 2, -3, 4};
174 assertEquals(baseStr + "[[1, 2, -3, 4]]", new ToStringBuilder(base).append(array).toString());
175 assertEquals(baseStr + "[[1, 2, -3, 4]]", new ToStringBuilder(base).append((Object) array).toString());
176 array = null;
177 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append(array).toString());
178 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append((Object) array).toString());
179 }
180
181 @Test
182 public void testLongArrayArray() {
183 long[][] array = {{1, 2}, null, {5}};
184 assertEquals(baseStr + "[[[1, 2], %NULL%, [5]]]", new ToStringBuilder(base).append(array).toString());
185 assertEquals(baseStr + "[[[1, 2], %NULL%, [5]]]", new ToStringBuilder(base).append((Object) array).toString());
186 array = null;
187 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append(array).toString());
188 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append((Object) array).toString());
189 }
190
191 @Test
192 public void testMap() {
193 assertEquals(baseStr + "[a=%SIZE=0%]", new ToStringBuilder(base).append("a", Collections.emptyMap(), false).toString());
194 assertEquals(baseStr + "[a={}]", new ToStringBuilder(base).append("a", Collections.emptyMap(), true).toString());
195 assertEquals(baseStr + "[a=%SIZE=1%]", new ToStringBuilder(base).append("a", Collections.singletonMap("k", "v"), false).toString());
196 assertEquals(baseStr + "[a={k=v}]", new ToStringBuilder(base).append("a", Collections.singletonMap("k", "v"), true).toString());
197 }
198
199 @Test
200 public void testObject() {
201 final Integer i3 = Integer.valueOf(3);
202 final Integer i4 = Integer.valueOf(4);
203 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append((Object) null).toString());
204 assertEquals(baseStr + "[3]", new ToStringBuilder(base).append(i3).toString());
205 assertEquals(baseStr + "[a=%NULL%]", new ToStringBuilder(base).append("a", (Object) null).toString());
206 assertEquals(baseStr + "[a=3]", new ToStringBuilder(base).append("a", i3).toString());
207 assertEquals(baseStr + "[a=3,b=4]", new ToStringBuilder(base).append("a", i3).append("b", i4).toString());
208 assertEquals(baseStr + "[a=%Integer%]", new ToStringBuilder(base).append("a", i3, false).toString());
209 }
210
211 @Test
212 public void testObjectArray() {
213 Object[] array = {null, base, new int[] {3, 6}};
214 assertEquals(baseStr + "[[%NULL%, 5, [3, 6]]]", new ToStringBuilder(base).append(array).toString());
215 assertEquals(baseStr + "[[%NULL%, 5, [3, 6]]]", new ToStringBuilder(base).append((Object) array).toString());
216 array = null;
217 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append(array).toString());
218 assertEquals(baseStr + "[%NULL%]", new ToStringBuilder(base).append((Object) array).toString());
219 }
220
221 @Test
222 public void testPerson() {
223 final Person p = new Person();
224 p.name = "Suzy Queue";
225 p.age = 19;
226 p.smoker = false;
227 final String pBaseStr = "ToStringStyleTest.Person";
228 assertEquals(pBaseStr + "[name=Suzy Queue,age=19,smoker=false]", new ToStringBuilder(p).append("name", p.name).append("age", p.age).append("smoker", p.smoker).toString());
229 }
230 }