1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.text;
18
19 import static org.apache.commons.lang3.LangAssertions.assertIllegalArgumentException;
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21
22 import java.util.FormattableFlags;
23 import java.util.Formatter;
24
25 import org.apache.commons.lang3.AbstractLangTest;
26 import org.apache.commons.lang3.StringUtils;
27 import org.junit.jupiter.api.Test;
28 import org.junit.jupiter.params.ParameterizedTest;
29 import org.junit.jupiter.params.provider.ValueSource;
30
31
32
33
34 @Deprecated
35 class FormattableUtilsTest extends AbstractLangTest {
36
37 @Test
38 void testAlternatePadCharacter() {
39 final char pad = '_';
40 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, -1, -1, pad).toString());
41 assertEquals("fo", FormattableUtils.append("foo", new Formatter(), 0, -1, 2, pad).toString());
42 assertEquals("_foo", FormattableUtils.append("foo", new Formatter(), 0, 4, -1, pad).toString());
43 assertEquals("___foo", FormattableUtils.append("foo", new Formatter(), 0, 6, -1, pad).toString());
44 assertEquals("_fo", FormattableUtils.append("foo", new Formatter(), 0, 3, 2, pad).toString());
45 assertEquals("___fo", FormattableUtils.append("foo", new Formatter(), 0, 5, 2, pad).toString());
46 assertEquals("foo_", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 4, -1, pad).toString());
47 assertEquals("foo___", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 6, -1, pad).toString());
48 assertEquals("fo_", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 3, 2, pad).toString());
49 assertEquals("fo___", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 5, 2, pad).toString());
50 }
51
52 @Test
53 void testAlternatePadCharAndEllipsis() {
54 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, -1, -1, '_', "*").toString());
55 assertEquals("f*", FormattableUtils.append("foo", new Formatter(), 0, -1, 2, '_', "*").toString());
56 assertEquals("_foo", FormattableUtils.append("foo", new Formatter(), 0, 4, -1, '_', "*").toString());
57 assertEquals("___foo", FormattableUtils.append("foo", new Formatter(), 0, 6, -1, '_', "*").toString());
58 assertEquals("_f*", FormattableUtils.append("foo", new Formatter(), 0, 3, 2, '_', "*").toString());
59 assertEquals("___f*", FormattableUtils.append("foo", new Formatter(), 0, 5, 2, '_', "*").toString());
60 assertEquals("foo_", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 4, -1, '_', "*").toString());
61 assertEquals("foo___", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 6, -1, '_', "*").toString());
62 assertEquals("f*_", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 3, 2, '_', "*").toString());
63 assertEquals("f*___", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 5, 2, '_', "*").toString());
64
65 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, -1, -1, '_', "+*").toString());
66 assertEquals("+*", FormattableUtils.append("foo", new Formatter(), 0, -1, 2, '_', "+*").toString());
67 assertEquals("_foo", FormattableUtils.append("foo", new Formatter(), 0, 4, -1, '_', "+*").toString());
68 assertEquals("___foo", FormattableUtils.append("foo", new Formatter(), 0, 6, -1, '_', "+*").toString());
69 assertEquals("_+*", FormattableUtils.append("foo", new Formatter(), 0, 3, 2, '_', "+*").toString());
70 assertEquals("___+*", FormattableUtils.append("foo", new Formatter(), 0, 5, 2, '_', "+*").toString());
71 assertEquals("foo_", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 4, -1, '_', "+*").toString());
72 assertEquals("foo___", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 6, -1, '_', "+*").toString());
73 assertEquals("+*_", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 3, 2, '_', "+*").toString());
74 assertEquals("+*___", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 5, 2, '_', "+*").toString());
75 }
76
77 @Test
78 void testDefaultAppend() {
79 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, -1, -1).toString());
80 assertEquals("fo", FormattableUtils.append("foo", new Formatter(), 0, -1, 2).toString());
81 assertEquals(" foo", FormattableUtils.append("foo", new Formatter(), 0, 4, -1).toString());
82 assertEquals(" foo", FormattableUtils.append("foo", new Formatter(), 0, 6, -1).toString());
83 assertEquals(" fo", FormattableUtils.append("foo", new Formatter(), 0, 3, 2).toString());
84 assertEquals(" fo", FormattableUtils.append("foo", new Formatter(), 0, 5, 2).toString());
85 assertEquals("foo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 4, -1).toString());
86 assertEquals("foo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 6, -1).toString());
87 assertEquals("fo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 3, 2).toString());
88 assertEquals("fo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 5, 2).toString());
89 }
90
91 @Test
92 void testEllipsis() {
93 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, -1, -1, "*").toString());
94 assertEquals("f*", FormattableUtils.append("foo", new Formatter(), 0, -1, 2, "*").toString());
95 assertEquals(" foo", FormattableUtils.append("foo", new Formatter(), 0, 4, -1, "*").toString());
96 assertEquals(" foo", FormattableUtils.append("foo", new Formatter(), 0, 6, -1, "*").toString());
97 assertEquals(" f*", FormattableUtils.append("foo", new Formatter(), 0, 3, 2, "*").toString());
98 assertEquals(" f*", FormattableUtils.append("foo", new Formatter(), 0, 5, 2, "*").toString());
99 assertEquals("foo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 4, -1, "*").toString());
100 assertEquals("foo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 6, -1, "*").toString());
101 assertEquals("f* ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 3, 2, "*").toString());
102 assertEquals("f* ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 5, 2, "*").toString());
103
104 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, -1, -1, "+*").toString());
105 assertEquals("+*", FormattableUtils.append("foo", new Formatter(), 0, -1, 2, "+*").toString());
106 assertEquals(" foo", FormattableUtils.append("foo", new Formatter(), 0, 4, -1, "+*").toString());
107 assertEquals(" foo", FormattableUtils.append("foo", new Formatter(), 0, 6, -1, "+*").toString());
108 assertEquals(" +*", FormattableUtils.append("foo", new Formatter(), 0, 3, 2, "+*").toString());
109 assertEquals(" +*", FormattableUtils.append("foo", new Formatter(), 0, 5, 2, "+*").toString());
110 assertEquals("foo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 4, -1, "+*").toString());
111 assertEquals("foo ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 6, -1, "+*").toString());
112 assertEquals("+* ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 3, 2, "+*").toString());
113 assertEquals("+* ", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, 5, 2, "+*").toString());
114 }
115
116 @ParameterizedTest
117 @ValueSource(ints = {0, FormattableFlags.LEFT_JUSTIFY})
118 void testEmptyPadding(final int flags) {
119 assertEquals("_____", FormattableUtils.append("", new Formatter(), flags, 5, -1, '_').toString());
120 assertEquals("_____", FormattableUtils.append("foo", new Formatter(), flags, 5, 0, '_').toString());
121 }
122
123 @Test
124 void testIllegalEllipsis() {
125 assertIllegalArgumentException(() -> FormattableUtils.append("foo", new Formatter(), 0, -1, 1, "xx"));
126 }
127
128 @ParameterizedTest
129 @ValueSource(ints = {0, FormattableFlags.LEFT_JUSTIFY})
130 void testLargePadding(final int flags) {
131 final int width = 500_000;
132 final String padding = StringUtils.repeat(' ', width - 3);
133 final String expected = flags == 0 ? padding + "foo" : "foo" + padding;
134 assertEquals(expected, FormattableUtils.append("foo", new Formatter(), flags, width, -1).toString());
135 }
136
137 @ParameterizedTest
138 @ValueSource(ints = {0, FormattableFlags.LEFT_JUSTIFY})
139 void testLargePaddingWithEllipsis(final int flags) {
140 final int width = 500_000;
141 final String padding = StringUtils.repeat('\u2603', width - 3);
142 final String expected = flags == 0 ? padding + "fo*" : "fo*" + padding;
143 assertEquals(expected, FormattableUtils.append("foobar", new Formatter(), flags, width, 3, '\u2603', "*").toString());
144 }
145
146 @ParameterizedTest
147 @ValueSource(ints = {Integer.MIN_VALUE, -1, 0, 2, 3})
148 void testNoPadding(final int width) {
149 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), 0, width, -1).toString());
150 assertEquals("foo", FormattableUtils.append("foo", new Formatter(), FormattableFlags.LEFT_JUSTIFY, width, -1).toString());
151 }
152
153 @Test
154 void testPercentLiteral() {
155 assertEquals("100% done", FormattableUtils.append("100% done", new Formatter(), 0, -1, -1).toString());
156 }
157
158 @Test
159 void testPercentLiteralX2() {
160 assertEquals("50% off 100% items", FormattableUtils.append("50% off 100% items", new Formatter(), 0, -1, -1).toString());
161 }
162
163 }