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
The following commit(s) were added to refs/heads/master by this push:
new 4d91b28fc Sort members.
4d91b28fc is described below
commit 4d91b28fce7317132360aa9f3bbf31cc6e479f00
Author: Gary Gregory <[email protected]>
AuthorDate: Sat Aug 22 15:53:54 2026 -0400
Sort members.
---
.../commons/lang3/StringUtilsSubstringTest.java | 180 ++++++++++-----------
1 file changed, 90 insertions(+), 90 deletions(-)
diff --git
a/src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
b/src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
index 605ff8bc6..55ee377ea 100644
--- a/src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsSubstringTest.java
@@ -84,6 +84,35 @@ void testLeft_String() {
assertSame(FOOBAR, StringUtils.left(FOOBAR, 80));
}
+ @Test
+ void testLeftSurrogatePair() {
+ // U+1F600 GRINNING FACE is a supplementary code point stored as a
surrogate pair
+ final String grin = "😀";
+ assertEquals("", StringUtils.left(grin, 0));
+ assertEquals("", StringUtils.left(grin, 1));
+ assertEquals(grin, StringUtils.left(grin, 2));
+ assertEquals(grin, StringUtils.left(grin, 3));
+
+ assertEquals("a", StringUtils.left("a" + grin, 1));
+ assertEquals("a", StringUtils.left("a" + grin, 2));
+ assertEquals("a" + grin, StringUtils.left("a" + grin, 3));
+
+ final String source = "a" + grin + "b" + grin + "cd" + grin + "ef";
+ for (int len = 0; len <= source.length(); len++) {
+ final String result = StringUtils.left(source, len);
+ assertTrue(result.length() <= len, () -> "result longer than len:
" + result);
+ for (int i = 0; i < result.length(); i++) {
+ final char ch = result.charAt(i);
+ if (Character.isHighSurrogate(ch)) {
+ assertTrue(i + 1 < result.length() &&
Character.isLowSurrogate(result.charAt(i + 1)), "lone high surrogate in: " +
result);
+ i++; // skip the paired low surrogate
+ } else {
+ assertFalse(Character.isLowSurrogate(ch), "lone low
surrogate in: " + result);
+ }
+ }
+ }
+ }
+
@Test
void testMid_String() {
assertSame(null, StringUtils.mid(null, -1, 0));
@@ -109,6 +138,38 @@ void testMid_String() {
assertEquals(FOOBAR, StringUtils.mid(FOOBAR, 0, Integer.MAX_VALUE));
}
+ @Test
+ void testMidSurrogatePair() {
+ // U+1F600 GRINNING FACE is a supplementary code point stored as a
surrogate pair
+ final String grin = "😀";
+ assertEquals("", StringUtils.mid(grin, 0, 0));
+ assertEquals("", StringUtils.mid(grin, 0, 1));
+ assertEquals(grin, StringUtils.mid(grin, 0, 2));
+ assertEquals(grin, StringUtils.mid(grin, 0, 3));
+ assertEquals("", StringUtils.mid(grin, 1, 1));
+ assertEquals("", StringUtils.mid(grin, 1, 2));
+
+ assertEquals("a", StringUtils.mid("a" + grin + "b", 0, 2));
+ assertEquals(grin, StringUtils.mid("a" + grin + "b", 1, 2));
+ assertEquals("b", StringUtils.mid("a" + grin + "b", 2, 2));
+
+ final String source = "a" + grin + "b" + grin + "cd" + grin + "ef";
+ for (int pos = 0; pos <= source.length(); pos++) {
+ for (int len = 0; len <= source.length(); len++) {
+ final String result = StringUtils.mid(source, pos, len);
+ for (int i = 0; i < result.length(); i++) {
+ final char ch = result.charAt(i);
+ if (Character.isHighSurrogate(ch)) {
+ assertTrue(i + 1 < result.length() &&
Character.isLowSurrogate(result.charAt(i + 1)), "lone high surrogate in: " +
result);
+ i++; // skip the paired low surrogate
+ } else {
+ assertFalse(Character.isLowSurrogate(ch), "lone low
surrogate in: " + result);
+ }
+ }
+ }
+ }
+ }
+
@Test
void testRight_String() {
assertSame(null, StringUtils.right(null, -1));
@@ -125,6 +186,35 @@ void testRight_String() {
assertSame(FOOBAR, StringUtils.right(FOOBAR, 80));
}
+ @Test
+ void testRightSurrogatePair() {
+ // U+1F600 GRINNING FACE is a supplementary code point stored as a
surrogate pair
+ final String grin = "😀";
+ assertEquals("", StringUtils.right(grin, 0));
+ assertEquals("", StringUtils.right(grin, 1));
+ assertEquals(grin, StringUtils.right(grin, 2));
+ assertEquals(grin, StringUtils.right(grin, 3));
+
+ assertEquals("a", StringUtils.right(grin + "a", 1));
+ assertEquals("a", StringUtils.right(grin + "a", 2));
+ assertEquals(grin + "a", StringUtils.right(grin + "a", 3));
+
+ final String source = "a" + grin + "b" + grin + "cd" + grin + "ef";
+ for (int len = 0; len <= source.length(); len++) {
+ final String result = StringUtils.right(source, len);
+ assertTrue(result.length() <= len, () -> "result longer than len:
" + result);
+ for (int i = 0; i < result.length(); i++) {
+ final char ch = result.charAt(i);
+ if (Character.isHighSurrogate(ch)) {
+ assertTrue(i + 1 < result.length() &&
Character.isLowSurrogate(result.charAt(i + 1)), "lone high surrogate in: " +
result);
+ i++; // skip the paired low surrogate
+ } else {
+ assertFalse(Character.isLowSurrogate(ch), "lone low
surrogate in: " + result);
+ }
+ }
+ }
+ }
+
@Test
void testSubstring_StringInt() {
assertNull(StringUtils.substring(null, 0));
@@ -401,94 +491,4 @@ void testSubstringsBetween_StringStringString() {
assertEquals(0, results.length);
}
- @Test
- void testLeftSurrogatePair() {
- // U+1F600 GRINNING FACE is a supplementary code point stored as a
surrogate pair
- final String grin = "😀";
- assertEquals("", StringUtils.left(grin, 0));
- assertEquals("", StringUtils.left(grin, 1));
- assertEquals(grin, StringUtils.left(grin, 2));
- assertEquals(grin, StringUtils.left(grin, 3));
-
- assertEquals("a", StringUtils.left("a" + grin, 1));
- assertEquals("a", StringUtils.left("a" + grin, 2));
- assertEquals("a" + grin, StringUtils.left("a" + grin, 3));
-
- final String source = "a" + grin + "b" + grin + "cd" + grin + "ef";
- for (int len = 0; len <= source.length(); len++) {
- final String result = StringUtils.left(source, len);
- assertTrue(result.length() <= len, () -> "result longer than len:
" + result);
- for (int i = 0; i < result.length(); i++) {
- final char ch = result.charAt(i);
- if (Character.isHighSurrogate(ch)) {
- assertTrue(i + 1 < result.length() &&
Character.isLowSurrogate(result.charAt(i + 1)), "lone high surrogate in: " +
result);
- i++; // skip the paired low surrogate
- } else {
- assertFalse(Character.isLowSurrogate(ch), "lone low
surrogate in: " + result);
- }
- }
- }
- }
-
- @Test
- void testMidSurrogatePair() {
- // U+1F600 GRINNING FACE is a supplementary code point stored as a
surrogate pair
- final String grin = "😀";
- assertEquals("", StringUtils.mid(grin, 0, 0));
- assertEquals("", StringUtils.mid(grin, 0, 1));
- assertEquals(grin, StringUtils.mid(grin, 0, 2));
- assertEquals(grin, StringUtils.mid(grin, 0, 3));
- assertEquals("", StringUtils.mid(grin, 1, 1));
- assertEquals("", StringUtils.mid(grin, 1, 2));
-
- assertEquals("a", StringUtils.mid("a" + grin + "b", 0, 2));
- assertEquals(grin, StringUtils.mid("a" + grin + "b", 1, 2));
- assertEquals("b", StringUtils.mid("a" + grin + "b", 2, 2));
-
- final String source = "a" + grin + "b" + grin + "cd" + grin + "ef";
- for (int pos = 0; pos <= source.length(); pos++) {
- for (int len = 0; len <= source.length(); len++) {
- final String result = StringUtils.mid(source, pos, len);
- for (int i = 0; i < result.length(); i++) {
- final char ch = result.charAt(i);
- if (Character.isHighSurrogate(ch)) {
- assertTrue(i + 1 < result.length() &&
Character.isLowSurrogate(result.charAt(i + 1)), "lone high surrogate in: " +
result);
- i++; // skip the paired low surrogate
- } else {
- assertFalse(Character.isLowSurrogate(ch), "lone low
surrogate in: " + result);
- }
- }
- }
- }
- }
-
- @Test
- void testRightSurrogatePair() {
- // U+1F600 GRINNING FACE is a supplementary code point stored as a
surrogate pair
- final String grin = "😀";
- assertEquals("", StringUtils.right(grin, 0));
- assertEquals("", StringUtils.right(grin, 1));
- assertEquals(grin, StringUtils.right(grin, 2));
- assertEquals(grin, StringUtils.right(grin, 3));
-
- assertEquals("a", StringUtils.right(grin + "a", 1));
- assertEquals("a", StringUtils.right(grin + "a", 2));
- assertEquals(grin + "a", StringUtils.right(grin + "a", 3));
-
- final String source = "a" + grin + "b" + grin + "cd" + grin + "ef";
- for (int len = 0; len <= source.length(); len++) {
- final String result = StringUtils.right(source, len);
- assertTrue(result.length() <= len, () -> "result longer than len:
" + result);
- for (int i = 0; i < result.length(); i++) {
- final char ch = result.charAt(i);
- if (Character.isHighSurrogate(ch)) {
- assertTrue(i + 1 < result.length() &&
Character.isLowSurrogate(result.charAt(i + 1)), "lone high surrogate in: " +
result);
- i++; // skip the paired low surrogate
- } else {
- assertFalse(Character.isLowSurrogate(ch), "lone low
surrogate in: " + result);
- }
- }
- }
- }
-
}