This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push: new 733a319aa Test modernization, clean up utility classes. 733a319aa is described below commit 733a319aac99aa654aacd8ce7b796240dc3a00bf Author: James Bognar <james.bog...@salesforce.com> AuthorDate: Mon Aug 25 16:19:14 2025 -0400 Test modernization, clean up utility classes. --- .../org/apache/juneau/common/internal/Utils.java | 12 +----------- .../main/java/org/apache/juneau/config/Entry.java | 3 ++- .../java/org/apache/juneau/AnnotationApplier.java | 3 ++- .../src/main/java/org/apache/juneau/BeanMeta.java | 4 ++-- .../java/org/apache/juneau/BeanPropertyMeta.java | 6 +++--- .../main/java/org/apache/juneau/BeanSession.java | 2 +- .../org/apache/juneau/collections/JsonMap.java | 2 +- .../org/apache/juneau/objecttools/SearchArgs.java | 2 +- .../org/apache/juneau/objecttools/SortArgs.java | 2 +- .../org/apache/juneau/objecttools/ViewArgs.java | 2 +- .../apache/juneau/svl/MultipartResolvingVar.java | 4 +++- .../java/org/apache/juneau/svl/MultipartVar.java | 4 +++- .../org/apache/juneau/utils/ReflectionMap.java | 2 +- .../main/java/org/apache/juneau/xml/Namespace.java | 3 ++- .../apache/juneau/http/header/BasicCsvHeader.java | 3 ++- .../org/apache/juneau/http/header/EntityTags.java | 3 ++- .../apache/juneau/http/part/BasicCsvArrayPart.java | 3 ++- .../juneau/rest/vars/SerializedRequestAttrVar.java | 4 +++- .../src/test/java/org/apache/juneau/TestUtils.java | 6 +++--- .../org/apache/juneau/utils/StringUtilsTest.java | 22 +++++++++++----------- 20 files changed, 47 insertions(+), 45 deletions(-) diff --git a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java index 8f8cc6b79..6447a7f2e 100644 --- a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java +++ b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java @@ -933,16 +933,6 @@ public class Utils { return l; } - /** - * Shortcut for calling <code>split(s, <js>','</js>)</code> - * - * @param s The string to split. Can be <jk>null</jk>. - * @return The tokens, or <jk>null</jk> if the string was null. - */ - public static String[] split3(String s) { - return split3(s, ','); - } - /** * Splits a character-delimited string into a string array. * @@ -1054,7 +1044,7 @@ public class Utils { * Splits a comma-delimited list into an array of strings. */ public static String[] splita(String s) { - return s == null ? new String[0] : Utils.split3(s); + return split3(s, ','); } /** diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java index b48ccb290..4997a85ea 100644 --- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java +++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java @@ -14,6 +14,7 @@ package org.apache.juneau.config; import static org.apache.juneau.BinaryFormat.*; import static org.apache.juneau.common.internal.StringUtils.*; +import static org.apache.juneau.common.internal.Utils.*; import java.lang.reflect.*; import java.util.*; @@ -281,7 +282,7 @@ public class Entry { throw new BeanRuntimeException(e); } } - return Utils.opt(Utils.split3(v)); + return Utils.opt(splita(v)); } /** diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java index f01ade09e..28ecdb40a 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java @@ -12,6 +12,7 @@ // *************************************************************************************************************************** package org.apache.juneau; +import static org.apache.juneau.common.internal.Utils.*; import static org.apache.juneau.internal.ClassUtils.*; import java.lang.annotation.*; import java.nio.charset.*; @@ -187,7 +188,7 @@ public abstract class AnnotationApplier<A extends Annotation, B> { * @return An array with resolved strings. */ protected Stream<String> cdl(String in) { - return Arrays.stream(Utils.split3(vr.resolve(in))).filter(Utils::isNotEmpty); + return Arrays.stream(splita(vr.resolve(in))).filter(Utils::isNotEmpty); } /** diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java index 9e7142d4e..1cfbf2cba 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java @@ -233,7 +233,7 @@ public class BeanMeta<T> { throw new BeanRuntimeException(c, "Multiple instances of '@Beanc' found."); constructor = x; constructorArgs = new String[0]; - ctx.forEachAnnotation(Beanc.class, x.inner(), y -> ! y.properties().isEmpty(), z -> constructorArgs = Utils.split3(z.properties())); + ctx.forEachAnnotation(Beanc.class, x.inner(), y -> ! y.properties().isEmpty(), z -> constructorArgs = splita(z.properties())); if (! x.hasNumParams(constructorArgs.length)) { if (constructorArgs.length != 0) throw new BeanRuntimeException(c, "Number of properties defined in '@Beanc' annotation does not match number of parameters in constructor."); @@ -256,7 +256,7 @@ public class BeanMeta<T> { throw new BeanRuntimeException(c, "Multiple instances of '@Beanc' found."); constructor = x; constructorArgs = new String[0]; - ctx.forEachAnnotation(Beanc.class, x.inner(), y -> ! y.properties().isEmpty(), z -> constructorArgs = Utils.split3(z.properties())); + ctx.forEachAnnotation(Beanc.class, x.inner(), y -> ! y.properties().isEmpty(), z -> constructorArgs = splita(z.properties())); if (! x.hasNumParams(constructorArgs.length)) { if (constructorArgs.length != 0) throw new BeanRuntimeException(c, "Number of properties defined in '@Beanc' annotation does not match number of parameters in constructor."); diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java index 191f11db2..086616cdf 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java @@ -190,7 +190,7 @@ public final class BeanPropertyMeta implements Comparable<BeanPropertyMeta> { } lp.forEach(x -> { if (! x.properties().isEmpty()) - properties = Utils.split3(x.properties()); + properties = splita(x.properties()); addAll(bdClasses, x.dictionary()); if (! x.ro().isEmpty()) readOnly = Boolean.valueOf(x.ro()); @@ -209,7 +209,7 @@ public final class BeanPropertyMeta implements Comparable<BeanPropertyMeta> { isUri |= (rawTypeMeta.isUri() || bc.hasAnnotation(Uri.class, getter)); lp.forEach(x -> { if (properties != null && ! x.properties().isEmpty()) - properties = Utils.split3(x.properties()); + properties = splita(x.properties()); addAll(bdClasses, x.dictionary()); if (! x.ro().isEmpty()) readOnly = Boolean.valueOf(x.ro()); @@ -229,7 +229,7 @@ public final class BeanPropertyMeta implements Comparable<BeanPropertyMeta> { if (swap == null) swap = getPropertySwap(x); if (properties != null && ! x.properties().isEmpty()) - properties = Utils.split3(x.properties()); + properties = splita(x.properties()); addAll(bdClasses, x.dictionary()); if (! x.ro().isEmpty()) readOnly = Boolean.valueOf(x.ro()); diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java index 3c54d72cf..0ba77280b 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java @@ -720,7 +720,7 @@ public class BeanSession extends ContextSession { else if (from.hasMutaterTo(to)) return from.mutateTo(value, to); else - return (T)toArray(to, new JsonList((Object[])Utils.split3(value.toString())).setBeanSession(this)); + return (T)toArray(to, new JsonList((Object[])splita(value.toString())).setBeanSession(this)); } // Target type is some sort of Map that needs to be converted. diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java index 1ac982bbd..311daf694 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java @@ -818,7 +818,7 @@ public class JsonMap extends LinkedHashMap<String,Object> { else if (s instanceof Object[]) r = ArrayUtils.toStringArray(alist((Object[])s)); else - r = Utils.split3(Utils.s(s)); + r = splita(Utils.s(s)); return (r.length == 0 ? def : r); } diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SearchArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SearchArgs.java index 1d6fd352c..f456bd4c1 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SearchArgs.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SearchArgs.java @@ -66,7 +66,7 @@ public class SearchArgs { * @param searchArgs Search arguments. */ public SearchArgs(String searchArgs) { - this(alist(Utils.split3(searchArgs))); + this(alist(splita(searchArgs))); } /** diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SortArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SortArgs.java index 7bf2d9f8e..d6f2ba586 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SortArgs.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/SortArgs.java @@ -88,7 +88,7 @@ public class SortArgs { * </ul> */ public SortArgs(String sortArgs) { - this(alist(Utils.split3(sortArgs))); + this(alist(splita(sortArgs))); } /** diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ViewArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ViewArgs.java index 7904cb0c8..a39a1f76b 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ViewArgs.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ViewArgs.java @@ -68,7 +68,7 @@ public class ViewArgs { * <br>Values are column names. */ public ViewArgs(String viewArgs) { - this(alist(Utils.split3(viewArgs))); + this(alist(splita(viewArgs))); } /** diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java index 2e00cd37e..b3a022f56 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartResolvingVar.java @@ -12,6 +12,8 @@ // *************************************************************************************************************************** package org.apache.juneau.svl; +import static org.apache.juneau.common.internal.Utils.*; + import org.apache.juneau.common.internal.*; /** @@ -47,7 +49,7 @@ public abstract class MultipartResolvingVar extends SimpleVar { int i = s.indexOf(','); if (i == -1) return resolve(session, s.trim()); - for (String s2 : Utils.split3(s)) { + for (String s2 : splita(s)) { String v = resolve(session, s2); if (v != null) return v; diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartVar.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartVar.java index 55461080b..2d5930d33 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartVar.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/MultipartVar.java @@ -12,6 +12,8 @@ // *************************************************************************************************************************** package org.apache.juneau.svl; +import static org.apache.juneau.common.internal.Utils.*; + import org.apache.juneau.common.internal.*; /** @@ -48,7 +50,7 @@ public abstract class MultipartVar extends SimpleVar { @Override /* Var */ public String resolve(VarResolverSession session, String s) { - String[] s2 = s.indexOf(',') == -1 ? new String[]{s.trim()} : Utils.split3(s); + String[] s2 = s.indexOf(',') == -1 ? new String[]{s.trim()} : splita(s); return resolve(session, s2); } } \ No newline at end of file diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java index 1a18e8aef..408dfc126 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java @@ -677,7 +677,7 @@ public class ReflectionMap<V> { ConstructorEntry(String name, V value) { int i = name.indexOf('('); - this.args = Utils.split3(name.substring(i+1, name.length()-1)); + this.args = splita(name.substring(i+1, name.length()-1)); name = name.substring(0, i).trim(); this.simpleClassName = simpleClassName(name); this.fullClassName = name; diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/Namespace.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/Namespace.java index cfd7417de..69a1dae5e 100644 --- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/Namespace.java +++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/Namespace.java @@ -12,6 +12,7 @@ // *************************************************************************************************************************** package org.apache.juneau.xml; +import static org.apache.juneau.common.internal.Utils.*; import static org.apache.juneau.internal.ClassUtils.*; import java.util.*; import java.util.concurrent.*; @@ -127,7 +128,7 @@ public final class Namespace { } if (o instanceof CharSequence) { - String[] ss = Utils.split3(o.toString()); + String[] ss = splita(o.toString()); Namespace[] n = new Namespace[ss.length]; for (int i = 0; i < ss.length; i++) n[i] = create(ss[i]); diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicCsvHeader.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicCsvHeader.java index 33bc7d192..387b73677 100644 --- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicCsvHeader.java +++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicCsvHeader.java @@ -12,6 +12,7 @@ // *************************************************************************************************************************** package org.apache.juneau.http.header; +import static org.apache.juneau.common.internal.Utils.*; import static org.apache.juneau.internal.ArrayUtils.*; import java.util.*; import java.util.function.*; @@ -108,7 +109,7 @@ public class BasicCsvHeader extends BasicHeader { */ public BasicCsvHeader(String name, String value) { super(name, value); - this.value = Utils.split3(value); + this.value = splita(value); this.supplier = null; } diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java index 76f533375..cbf3c16ba 100644 --- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java +++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java @@ -12,6 +12,7 @@ // *************************************************************************************************************************** package org.apache.juneau.http.header; +import static org.apache.juneau.common.internal.Utils.*; import static org.apache.juneau.internal.ArrayUtils.copyOf; import java.util.*; import org.apache.juneau.annotation.*; @@ -82,7 +83,7 @@ public class EntityTags { private EntityTag[] parse(String value) { if (value == null) return null; - String[] s = Utils.split3(value); + String[] s = splita(value); EntityTag[] v = new EntityTag[s.length]; for (int i = 0; i < s.length; i++) v[i] = EntityTag.of(s[i]); diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java index f8c810976..6b422e464 100644 --- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java +++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java @@ -12,6 +12,7 @@ // *************************************************************************************************************************** package org.apache.juneau.http.part; +import static org.apache.juneau.common.internal.Utils.*; import static org.apache.juneau.internal.ArrayUtils.copyOf; import java.util.*; import java.util.function.*; @@ -110,7 +111,7 @@ public class BasicCsvArrayPart extends BasicPart { */ public BasicCsvArrayPart(String name, String value) { super(name, value); - this.value = Utils.split3(value); + this.value = splita(value); this.supplier = null; this.stringValue = value; } diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java index fd03411b6..7686c6e44 100644 --- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java +++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/vars/SerializedRequestAttrVar.java @@ -12,6 +12,8 @@ // *************************************************************************************************************************** package org.apache.juneau.rest.vars; +import static org.apache.juneau.common.internal.Utils.*; + import java.io.*; import org.apache.juneau.common.internal.*; @@ -54,7 +56,7 @@ public class SerializedRequestAttrVar extends StreamedVar { int i = key.indexOf(','); if (i == -1) throw new IllegalArgumentException("Invalid format for $SA var. Must be of the format $SA{contentType,key[,defaultValue]}"); - String[] s2 = Utils.split3(key); + String[] s2 = splita(key); RestRequest req = session.getBean(RestRequest.class).orElseThrow(InternalServerError::new); Object o = req.getAttribute(key).orElse(key); Serializer s = req.getOpContext().getSerializers().getSerializer(s2[0]); diff --git a/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java b/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java index 6b5363025..ebbe5ac89 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java +++ b/juneau-utest/src/test/java/org/apache/juneau/TestUtils.java @@ -120,7 +120,7 @@ public class TestUtils extends Utils { public static void assertContainsAll(String expected, Object actual) { var a2 = r(actual); - for (var e : Utils.split3(expected)) + for (var e : splita(expected)) assertTrue(a2.contains(e), fs("String did not contain expected substring. expected={0}, actual={1}", e, a2)); } @@ -137,7 +137,7 @@ public class TestUtils extends Utils { */ public static void assertArray(Object array, Object...expected) { if (expected.length == 1 && expected[0] instanceof String && s(expected[0]).contains(",")) - expected = s(expected[0]).charAt(0) == '>' ? new String[]{s(expected[0]).substring(1)} : Utils.split3(s(expected[0])); + expected = s(expected[0]).charAt(0) == '>' ? new String[]{s(expected[0]).substring(1)} : splita(s(expected[0])); if (Array.getLength(array) != expected.length) fail(fs("Wrong array length. expected={0}, actual={1}", expected.length, Array.getLength(array))); for (var i = 0; i < expected.length; i++) { @@ -160,7 +160,7 @@ public class TestUtils extends Utils { */ public static void assertList(List<?> list, Object...expected) { if (expected.length == 1 && expected[0] instanceof String && s(expected[0]).contains(",")) - expected = s(expected[0]).charAt(0) == '>' ? new String[]{s(expected[0]).substring(1)} : Utils.split3(s(expected[0])); + expected = s(expected[0]).charAt(0) == '>' ? new String[]{s(expected[0]).substring(1)} : splita(s(expected[0])); if (list.size() != expected.length) fail(fs("Wrong list length. expected={0}, actual={1}", expected.length, list.size())); for (var i = 0; i < expected.length; i++) { diff --git a/juneau-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java b/juneau-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java index e1b9432bf..a717d80e2 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java @@ -397,17 +397,17 @@ class StringUtilsTest extends SimpleTestBase { // split(String,char) //==================================================================================================== @Test void a07_split() { - assertNull(Utils.split3((String)null)); - assertArray(Utils.split3("")); - assertArray(Utils.split3("1"), "1"); - assertArray(Utils.split3("1,2"), "1", "2"); - assertArray(Utils.split3("1\\,2"), ">1,2"); - assertArray(Utils.split3("1\\\\,2"), "1\\", "2"); - assertArray(Utils.split3("1\\\\\\,2"), ">1\\,2"); - assertArray(Utils.split3("1,2\\"), "1", "2\\"); - assertArray(Utils.split3("1,2\\\\"), "1", "2\\"); - assertArray(Utils.split3("1,2\\,"), "1", "2,"); - assertArray(Utils.split3("1,2\\\\,"), "1", "2\\", ""); + assertNull(Utils.splita((String)null)); + assertArray(Utils.splita("")); + assertArray(Utils.splita("1"), "1"); + assertArray(Utils.splita("1,2"), "1", "2"); + assertArray(Utils.splita("1\\,2"), ">1,2"); + assertArray(Utils.splita("1\\\\,2"), "1\\", "2"); + assertArray(Utils.splita("1\\\\\\,2"), ">1\\,2"); + assertArray(Utils.splita("1,2\\"), "1", "2\\"); + assertArray(Utils.splita("1,2\\\\"), "1", "2\\"); + assertArray(Utils.splita("1,2\\,"), "1", "2,"); + assertArray(Utils.splita("1,2\\\\,"), "1", "2\\", ""); } @Test void a08_split2() {