|
10 | 10 |
|
11 | 11 | package org.junit.jupiter.params; |
12 | 12 |
|
| 13 | +import static java.lang.Math.min; |
13 | 14 | import static java.util.Objects.requireNonNull; |
14 | 15 | import static java.util.stream.Collectors.joining; |
15 | 16 | import static org.junit.jupiter.params.ParameterizedInvocationConstants.ARGUMENTS_PLACEHOLDER; |
|
24 | 25 | import java.text.Format; |
25 | 26 | import java.text.MessageFormat; |
26 | 27 | import java.util.ArrayList; |
27 | | -import java.util.Arrays; |
28 | 28 | import java.util.LinkedHashMap; |
29 | 29 | import java.util.List; |
30 | 30 | import java.util.Map; |
@@ -246,24 +246,27 @@ public synchronized void append(ArgumentsContext context, StringBuffer result) { |
246 | 246 | this.messageFormat.format(makeReadable(context.consumedArguments), result, new FieldPosition(0)); |
247 | 247 | } |
248 | 248 |
|
249 | | - private @Nullable Object[] makeReadable(@Nullable Object[] arguments) { |
250 | | - @Nullable |
251 | | - Format[] formats = messageFormat.getFormatsByArgumentIndex(); |
252 | | - @Nullable |
253 | | - Object[] result = Arrays.copyOf(arguments, Math.min(arguments.length, formats.length), Object[].class); |
254 | | - for (int i = 0; i < result.length; i++) { |
255 | | - if (formats[i] == null) { |
256 | | - result[i] = truncateIfExceedsMaxLength(StringUtils.nullSafeToString(arguments[i])); |
257 | | - } |
258 | | - } |
259 | | - return result; |
| 249 | + @Nullable |
| 250 | + private Object[] makeReadable(@Nullable Object[] arguments) { |
| 251 | + return requireNonNull(makeReadable(arguments, messageFormat.getFormatsByArgumentIndex())).toArray(); |
260 | 252 | } |
261 | 253 |
|
262 | | - private @Nullable String truncateIfExceedsMaxLength(@Nullable String argument) { |
263 | | - if (argument != null && argument.length() > this.argumentMaxLength) { |
264 | | - return argument.substring(0, this.argumentMaxLength - 1) + ELLIPSIS; |
265 | | - } |
266 | | - return argument; |
| 254 | + @Nullable |
| 255 | + private List<Object> makeReadable(@Nullable Object[] arguments, Format[] formats) { |
| 256 | + return IntStream.range(0, min(arguments.length, formats.length)).mapToObj( |
| 257 | + i -> makeReadable(arguments, i, formats[i])).toList(); |
| 258 | + } |
| 259 | + |
| 260 | + @Nullable |
| 261 | + private Object makeReadable(@Nullable Object[] arguments, int index, @Nullable Format format) { |
| 262 | + return format != null ? arguments == null ? "" : arguments[index] |
| 263 | + : truncateIfExceedsMaxLength(StringUtils.nullSafeToString(arguments[index])); |
| 264 | + } |
| 265 | + |
| 266 | + private String truncateIfExceedsMaxLength(String argument) { |
| 267 | + return argument.length() > this.argumentMaxLength |
| 268 | + ? argument.substring(0, this.argumentMaxLength - 1) + ELLIPSIS |
| 269 | + : argument; |
267 | 270 | } |
268 | 271 | } |
269 | 272 |
|
|
0 commit comments