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