1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.beanutils2.converters;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.fail;
22
23 import java.text.DecimalFormat;
24 import java.util.Locale;
25
26 import org.apache.commons.beanutils2.ConversionException;
27 import org.apache.commons.beanutils2.locale.LocaleConvertUtils;
28 import org.apache.commons.beanutils2.locale.converters.FloatLocaleConverter;
29 import org.junit.jupiter.api.BeforeEach;
30 import org.junit.jupiter.api.Test;
31
32
33
34
35 public class FloatLocaleConverterTest extends AbstractLocaleConverterTest<Float> {
36
37
38
39
40 @Override
41 @BeforeEach
42 public void setUp() throws Exception {
43
44 super.setUp();
45
46 defaultValue = Float.valueOf("9.99");
47 expectedValue = Float.valueOf(expectedDecimalValue);
48
49 }
50
51
52
53
54
55
56 @Test
57 public void testConstructor_2() {
58
59
60 converter = FloatLocaleConverter.builder().get();
61
62
63 convertValueNoPattern(converter, defaultDecimalValue, expectedValue);
64 convertValueWithPattern(converter, defaultDecimalValue, defaultDecimalPattern, expectedValue);
65 convertInvalid(converter, null);
66 convertNull(converter, null);
67
68 }
69
70
71
72
73
74
75 @Test
76 public void testConstructor_3() {
77
78
79 converter = FloatLocaleConverter.builder().setLocalizedPattern(true).get();
80
81
82 convertValueNoPattern(converter, defaultDecimalValue, expectedValue);
83 convertValueWithPattern(converter, defaultDecimalValue, defaultDecimalPattern, expectedValue);
84 convertInvalid(converter, null);
85 convertNull(converter, null);
86
87 }
88
89
90
91
92 @Test
93 public void testConstructor_4() {
94
95
96 converter = FloatLocaleConverter.builder().setLocale(localizedLocale).get();
97
98
99 convertValueNoPattern(converter, localizedDecimalValue, expectedValue);
100 convertValueWithPattern(converter, localizedDecimalValue, defaultDecimalPattern, expectedValue);
101 convertInvalid(converter, null);
102 convertNull(converter, null);
103
104 }
105
106
107
108
109 @Test
110 public void testConstructor_5() {
111
112
113 converter = FloatLocaleConverter.builder().setLocale(localizedLocale).setLocalizedPattern(true).get();
114
115
116 convertValueNoPattern(converter, localizedDecimalValue, expectedValue);
117 convertValueWithPattern(converter, localizedDecimalValue, localizedDecimalPattern, expectedValue);
118 convertInvalid(converter, null);
119 convertNull(converter, null);
120
121 }
122
123
124
125
126 @Test
127 public void testConstructor_6() {
128
129
130 converter = FloatLocaleConverter.builder().setLocale(localizedLocale).setPattern(defaultDecimalPattern).get();
131
132
133 convertValueNoPattern(converter, localizedDecimalValue, expectedValue);
134 convertValueWithPattern(converter, localizedDecimalValue, defaultDecimalPattern, expectedValue);
135 convertInvalid(converter, null);
136 convertNull(converter, null);
137
138 }
139
140
141
142
143 @Test
144 public void testConstructor_7() {
145
146
147 converter = FloatLocaleConverter.builder().setLocale(localizedLocale).setPattern(localizedDecimalPattern).setLocalizedPattern(true).get();
148
149
150 convertValueNoPattern(converter, localizedDecimalValue, expectedValue);
151 convertValueWithPattern(converter, localizedDecimalValue, localizedDecimalPattern, expectedValue);
152 convertInvalid(converter, null);
153 convertNull(converter, null);
154
155 }
156
157
158
159
160 @Test
161 public void testConstructor_8() {
162
163
164 converter = FloatLocaleConverter.builder().setDefault(defaultValue).get();
165
166
167 convertValueNoPattern(converter, defaultDecimalValue, expectedValue);
168 convertValueWithPattern(converter, defaultDecimalValue, defaultDecimalPattern, expectedValue);
169 convertInvalid(converter, defaultValue);
170 convertNull(converter, defaultValue);
171
172 }
173
174
175
176
177 @Test
178 public void testConstructor_9() {
179
180
181 converter = FloatLocaleConverter.builder().setDefault(defaultValue).setLocalizedPattern(true).get();
182
183
184 convertValueNoPattern(converter, defaultDecimalValue, expectedValue);
185 convertValueWithPattern(converter, defaultDecimalValue, defaultDecimalPattern, expectedValue);
186 convertInvalid(converter, defaultValue);
187 convertNull(converter, defaultValue);
188
189 }
190
191
192
193
194 @Test
195 public void testConstructorMain() {
196
197
198 converter = FloatLocaleConverter.builder().setDefault(defaultValue).setLocale(localizedLocale).setPattern(localizedDecimalPattern)
199 .setLocalizedPattern(true).get();
200
201 convertValueNoPattern(converter, "(A)", localizedDecimalValue, expectedValue);
202 convertValueWithPattern(converter, "(A)", localizedDecimalValue, localizedDecimalPattern, expectedValue);
203 convertInvalid(converter, "(A)", defaultValue);
204 convertNull(converter, "(A)", defaultValue);
205
206
207
208
209
210
211
212 convertValueNoPattern(converter, "(B)", defaultDecimalValue, Float.valueOf("1.234"));
213
214
215
216
217
218
219
220
221 convertValueWithPattern(converter, "(B)", localizedDecimalValue, defaultDecimalPattern, defaultValue);
222
223
224
225
226
227
228
229
230
231
232
233 converter = FloatLocaleConverter.builder().setDefault(defaultValue).setLocale(localizedLocale).setPattern(defaultDecimalPattern)
234 .setLocalizedPattern(false).get();
235
236 convertValueNoPattern(converter, "(C)", localizedDecimalValue, expectedValue);
237 convertValueWithPattern(converter, "(C)", localizedDecimalValue, defaultDecimalPattern, expectedValue);
238 convertInvalid(converter, "(C)", defaultValue);
239 convertNull(converter, "(C)", defaultValue);
240
241 }
242
243
244
245
246 @Test
247 public void testFloatLimits() {
248
249 converter = FloatLocaleConverter.builder().setLocale(defaultLocale).setPattern(defaultDecimalPattern).get();
250 final DecimalFormat fmt = new DecimalFormat("#.#############################################################");
251
252 assertEquals(Float.valueOf((float) -0.12), converter.convert("-0.12"));
253 assertEquals(Float.valueOf(Float.MAX_VALUE), converter.convert(fmt.format(Float.MAX_VALUE)), "Positive Float.MAX_VALUE");
254 assertEquals(Float.valueOf(Float.MIN_VALUE), converter.convert(fmt.format(Float.MIN_VALUE)), "Positive Float.MIN_VALUE");
255
256 assertEquals(Float.valueOf(Float.MAX_VALUE * -1), converter.convert(fmt.format(Float.MAX_VALUE * -1)), "Negative Float.MAX_VALUE");
257 assertEquals(Float.valueOf(Float.MIN_VALUE * -1), converter.convert(fmt.format(Float.MIN_VALUE * -1)), "Negative Float.MIN_VALUE");
258
259 try {
260 converter.convert(fmt.format((double) Float.MAX_VALUE * (double) 10));
261 fail("Positive Too Large should throw ConversionException");
262 } catch (final ConversionException e) {
263
264 }
265 try {
266 converter.convert(fmt.format((double) Float.MAX_VALUE * (double) -10));
267 fail("Negative Too Large should throw ConversionException");
268 } catch (final ConversionException e) {
269
270 }
271
272 try {
273 converter.convert(fmt.format((double) Float.MIN_VALUE / (double) 10));
274 fail("Positive Too Small should throw ConversionException");
275 } catch (final ConversionException e) {
276
277 }
278 try {
279 converter.convert(fmt.format((double) Float.MIN_VALUE / (double) -10));
280 fail("Negative Too Small should throw ConversionException");
281 } catch (final ConversionException e) {
282
283 }
284 }
285
286
287
288
289 @Test
290 public void testParseZero() {
291 try {
292 final Object result = LocaleConvertUtils.convert("0", Float.class, Locale.US, null);
293 assertEquals(Float.valueOf(0), result);
294 } catch (final ConversionException e) {
295 fail("Zero threw ConversionException: " + e);
296 }
297
298 }
299
300 }