This is an automated email from the ASF dual-hosted git repository.

garydgregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit 6cb563d122680d6bf82f8cebdc9fde20f0128bca
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Jun 28 11:56:02 2026 +0000

    Handle supplementary code points in StringUtils.splitByCharacterType()
    
    - Fix JUnit API usage
    - Reduce vertical whitespace
---
 .../org/apache/commons/lang3/StringUtilsTest.java  | 76 ++++++----------------
 1 file changed, 20 insertions(+), 56 deletions(-)

diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java 
b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
index e90b276fb..c9090c513 100644
--- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
@@ -2334,76 +2334,40 @@ void testSplit_StringString_StringStringInt() {
     void testSplitByCharacterType() {
         assertNull(StringUtils.splitByCharacterType(null));
         assertEquals(0, StringUtils.splitByCharacterType("").length);
-
-        assertTrue(Objects.deepEquals(new String[]{"ab", " ", "de", " ",
-                "fg"}, StringUtils.splitByCharacterType("ab de fg")));
-
-        assertTrue(Objects.deepEquals(new String[]{"ab", "   ", "de", " ",
-                "fg"}, StringUtils.splitByCharacterType("ab   de fg")));
-
-        assertTrue(Objects.deepEquals(new String[]{"ab", ":", "cd", ":",
-                "ef"}, StringUtils.splitByCharacterType("ab:cd:ef")));
-
-        assertTrue(Objects.deepEquals(new String[]{"number", "5"},
-                StringUtils.splitByCharacterType("number5")));
-
-        assertTrue(Objects.deepEquals(new String[]{"foo", "B", "ar"},
-                StringUtils.splitByCharacterType("fooBar")));
-
-        assertTrue(Objects.deepEquals(new String[]{"foo", "200", "B", "ar"},
-                StringUtils.splitByCharacterType("foo200Bar")));
-
-        assertTrue(Objects.deepEquals(new String[]{"ASFR", "ules"},
-                StringUtils.splitByCharacterType("ASFRules")));
-
+        assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, 
StringUtils.splitByCharacterType("ab de fg"));
+        assertArrayEquals(new String[] { "ab", "   ", "de", " ", "fg" }, 
StringUtils.splitByCharacterType("ab   de fg"));
+        assertArrayEquals(new String[] { "ab", ":", "cd", ":", "ef" }, 
StringUtils.splitByCharacterType("ab:cd:ef"));
+        assertArrayEquals(new String[] { "number", "5" }, 
StringUtils.splitByCharacterType("number5"));
+        assertArrayEquals(new String[] { "foo", "B", "ar" }, 
StringUtils.splitByCharacterType("fooBar"));
+        assertArrayEquals(new String[] { "foo", "200", "B", "ar" }, 
StringUtils.splitByCharacterType("foo200Bar"));
+        assertArrayEquals(new String[] { "ASFR", "ules" }, 
StringUtils.splitByCharacterType("ASFRules"));
         // Supplementary code points are classified by their own type, not 
split apart as surrogates.
         // U+1D400 MATHEMATICAL BOLD CAPITAL A is an upper-case letter, like 
ASCII 'A'.
         final String boldA = new String(Character.toChars(0x1D400));
         // U+1D7D3 MATHEMATICAL BOLD DIGIT FIVE is a decimal digit, like ASCII 
'5'.
         final String boldFive = new String(Character.toChars(0x1D7D3));
-        assertTrue(Objects.deepEquals(new String[]{"A" + boldA},
-                StringUtils.splitByCharacterType("A" + boldA)));
-        assertTrue(Objects.deepEquals(new String[]{"5" + boldFive},
-                StringUtils.splitByCharacterType("5" + boldFive)));
-        assertTrue(Objects.deepEquals(new String[]{boldA, "5" + boldFive, "z"},
-                StringUtils.splitByCharacterType(boldA + "5" + boldFive + 
"z")));
+        assertArrayEquals(new String[] { "A" + boldA }, 
StringUtils.splitByCharacterType("A" + boldA));
+        assertArrayEquals(new String[] { "5" + boldFive }, 
StringUtils.splitByCharacterType("5" + boldFive));
+        assertArrayEquals(new String[] { boldA, "5" + boldFive, "z" }, 
StringUtils.splitByCharacterType(boldA + "5" + boldFive + "z"));
     }
 
     @Test
     void testSplitByCharacterTypeCamelCase() {
         assertNull(StringUtils.splitByCharacterTypeCamelCase(null));
         assertEquals(0, StringUtils.splitByCharacterTypeCamelCase("").length);
-
-        assertTrue(Objects.deepEquals(new String[]{"ab", " ", "de", " ",
-                "fg"}, StringUtils.splitByCharacterTypeCamelCase("ab de fg")));
-
-        assertTrue(Objects.deepEquals(new String[]{"ab", "   ", "de", " ",
-                "fg"}, StringUtils.splitByCharacterTypeCamelCase("ab   de 
fg")));
-
-        assertTrue(Objects.deepEquals(new String[]{"ab", ":", "cd", ":",
-                "ef"}, StringUtils.splitByCharacterTypeCamelCase("ab:cd:ef")));
-
-        assertTrue(Objects.deepEquals(new String[]{"number", "5"},
-                StringUtils.splitByCharacterTypeCamelCase("number5")));
-
-        assertTrue(Objects.deepEquals(new String[]{"foo", "Bar"},
-                StringUtils.splitByCharacterTypeCamelCase("fooBar")));
-
-        assertTrue(Objects.deepEquals(new String[]{"foo", "200", "Bar"},
-                StringUtils.splitByCharacterTypeCamelCase("foo200Bar")));
-
-        assertTrue(Objects.deepEquals(new String[]{"ASF", "Rules"},
-                StringUtils.splitByCharacterTypeCamelCase("ASFRules")));
-
+        assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, 
StringUtils.splitByCharacterTypeCamelCase("ab de fg"));
+        assertArrayEquals(new String[] { "ab", "   ", "de", " ", "fg" }, 
StringUtils.splitByCharacterTypeCamelCase("ab   de fg"));
+        assertArrayEquals(new String[] { "ab", ":", "cd", ":", "ef" }, 
StringUtils.splitByCharacterTypeCamelCase("ab:cd:ef"));
+        assertArrayEquals(new String[] { "number", "5" }, 
StringUtils.splitByCharacterTypeCamelCase("number5"));
+        assertArrayEquals(new String[] { "foo", "Bar" }, 
StringUtils.splitByCharacterTypeCamelCase("fooBar"));
+        assertArrayEquals(new String[] { "foo", "200", "Bar" }, 
StringUtils.splitByCharacterTypeCamelCase("foo200Bar"));
+        assertArrayEquals(new String[] { "ASF", "Rules" }, 
StringUtils.splitByCharacterTypeCamelCase("ASFRules"));
         // A supplementary upper-case letter immediately before a lower-case 
run joins the following token,
         // exactly as a BMP upper-case letter does. U+1D400 MATHEMATICAL BOLD 
CAPITAL A is an upper-case letter.
         final String boldA = new String(Character.toChars(0x1D400));
-        assertTrue(Objects.deepEquals(new String[]{boldA + "bc"},
-                StringUtils.splitByCharacterTypeCamelCase(boldA + "bc")));
-        assertTrue(Objects.deepEquals(new String[]{"AB", boldA + "cd"},
-                StringUtils.splitByCharacterTypeCamelCase("AB" + boldA + 
"cd")));
-        assertTrue(Objects.deepEquals(new String[]{"foo", boldA + "bar"},
-                StringUtils.splitByCharacterTypeCamelCase("foo" + boldA + 
"bar")));
+        assertArrayEquals(new String[] { boldA + "bc" }, 
StringUtils.splitByCharacterTypeCamelCase(boldA + "bc"));
+        assertArrayEquals(new String[] { "AB", boldA + "cd" }, 
StringUtils.splitByCharacterTypeCamelCase("AB" + boldA + "cd"));
+        assertArrayEquals(new String[] { "foo", boldA + "bar" }, 
StringUtils.splitByCharacterTypeCamelCase("foo" + boldA + "bar"));
     }
 
     @Test

Reply via email to