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-text.git


The following commit(s) were added to refs/heads/master by this push:
     new 97589ca9 Add CharSequenceTranslatorTest
97589ca9 is described below

commit 97589ca99bc9bf9fcf70989aa2f0437d631f201d
Author: Gary Gregory <[email protected]>
AuthorDate: Tue Nov 3 08:30:10 2026 -0500

    Add CharSequenceTranslatorTest
---
 .../text/translate/CharSequenceTranslatorTest.java | 60 +++++++++++++++++++---
 1 file changed, 53 insertions(+), 7 deletions(-)

diff --git 
a/src/test/java/org/apache/commons/text/translate/CharSequenceTranslatorTest.java
 
b/src/test/java/org/apache/commons/text/translate/CharSequenceTranslatorTest.java
index cd16956c..ed512df7 100644
--- 
a/src/test/java/org/apache/commons/text/translate/CharSequenceTranslatorTest.java
+++ 
b/src/test/java/org/apache/commons/text/translate/CharSequenceTranslatorTest.java
@@ -14,7 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.commons.text.translate;
+
+package org.apache.commons.text.translate;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -25,33 +26,78 @@ import java.io.UncheckedIOException;
 import java.io.Writer;
 
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+import org.junitpioneer.jupiter.DefaultLocale;
 
-
+/**
+ * Tests {@link CharSequenceTranslator}.
+ */
 class CharSequenceTranslatorTest {
 
     private final class TestCharSequenceTranslator extends 
CharSequenceTranslator {
+
         @Override
         public int translate(final CharSequence input, final int index, final 
Writer writer) {
             translateInvocationCounter++;
             return 0;
         }
-
     }
 
-    //Used to count translate invocations
+    // Used to count translate invocations
     private int translateInvocationCounter;
 
+    @ParameterizedTest
+    // @formatter:off
+    @CsvSource({
+        "0, 0", "1, 1", "2, 2", "3, 3", "4, 4", "5, 5", "6, 6", "7, 7",
+        "8, 8", "9, 9", "10, A", "11, B", "12, C", "13, D", "14, E", "15, F",
+        "0x10, 10", "0xFF, FF", "0x100, 100", "0xFFF, FFF", "0x1000, 1000",
+        "0xFFFF, FFFF", "0x10000, 10000", "0xFFFFF, FFFFF", "0x100000, 100000",
+        "0xFFFFFF, FFFFFF", "0x1000000, 1000000", "0xFFFFFFF, FFFFFFF", 
"0x10000000, 10000000",
+        "0xABCDEF, ABCDEF", "0x1020304, 1020304", "2147483647, 7FFFFFFF"
+    })
+    // @formatter:on
+    void testHexDigitsAndWidth(final int value, final String expected) {
+        assertEquals(expected, CharSequenceTranslator.hex(value));
+    }
+
+    @Test
+    @DefaultLocale("tr")
+    void testHexIgnoresDefaultLocale() {
+        assertEquals("ABCDEF", CharSequenceTranslator.hex(0xABCDEF));
+        assertEquals("FFFFFFFF", CharSequenceTranslator.hex(-1));
+    }
+
+    @ParameterizedTest
+    @CsvSource({ "-1, FFFFFFFF", "-2, FFFFFFFE", "-16, FFFFFFF0", "-255, 
FFFFFF01", "-2147483647, 80000001", "-2147483648, 80000000" })
+    void testHexNegativeValuesUseTwosComplement(final int value, final String 
expected) {
+        assertEquals(expected, CharSequenceTranslator.hex(value));
+    }
+
+    @ParameterizedTest
+    // @formatter:off
+    @CsvSource({
+        "0x20, 20", "0x41, 41", "0x7F, 7F", "0x80, 80", "0xE9, E9", "0x20AC, 
20AC",
+        "0xD7FF, D7FF", "0xD800, D800", "0xDFFF, DFFF", "0xE000, E000", 
"0xFFFF, FFFF",
+        "0x10000, 10000", "0x1F600, 1F600", "0x10FFFF, 10FFFF", "0x110000, 
110000"
+    })
+    // @formatter:on
+    void testHexUnicodeBoundaries(final int value, final String expected) {
+        // Conversion accepts any int, including surrogates and values beyond 
the Unicode range.
+        assertEquals(expected, CharSequenceTranslator.hex(value));
+    }
+
     @Test
     void testIOException() {
         final CharSequenceTranslator translator = new CharSequenceTranslator() 
{
+
             @Override
             public int translate(final CharSequence input, final int index, 
final Writer writer) throws IOException {
                 throw new IOException("Test exception");
             }
         };
-
-        assertThrows(UncheckedIOException.class,
-                () -> translator.translate("."));
+        assertThrows(UncheckedIOException.class, () -> 
translator.translate("."));
     }
 
     @Test

Reply via email to