diff options
Diffstat (limited to 'src/test/java/org/apache/commons/lang3/CharUtilsTest.java')
-rw-r--r-- | src/test/java/org/apache/commons/lang3/CharUtilsTest.java | 350 |
1 files changed, 350 insertions, 0 deletions
diff --git a/src/test/java/org/apache/commons/lang3/CharUtilsTest.java b/src/test/java/org/apache/commons/lang3/CharUtilsTest.java new file mode 100644 index 000000000..aec0351f5 --- /dev/null +++ b/src/test/java/org/apache/commons/lang3/CharUtilsTest.java @@ -0,0 +1,350 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.lang3; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Modifier; + +import org.junit.jupiter.api.Test; + +/** + * Unit tests {@link org.apache.commons.lang3.CharUtils}. + */ +public class CharUtilsTest extends AbstractLangTest { + + private static final char CHAR_COPY = '\u00a9'; + private static final Character CHARACTER_A = Character.valueOf('A'); + private static final Character CHARACTER_B = Character.valueOf('B'); + + @Test + public void testCompare() { + assertTrue(CharUtils.compare('a', 'b') < 0); + assertEquals(0, CharUtils.compare('c', 'c')); + assertTrue(CharUtils.compare('c', 'a') > 0); + } + + @Test + public void testConstructor() { + assertNotNull(new CharUtils()); + final Constructor<?>[] cons = CharUtils.class.getDeclaredConstructors(); + assertEquals(1, cons.length); + assertTrue(Modifier.isPublic(cons[0].getModifiers())); + assertTrue(Modifier.isPublic(CharUtils.class.getModifiers())); + assertFalse(Modifier.isFinal(CharUtils.class.getModifiers())); + } + + @Test + public void testIsAscii_char() { + assertTrue(CharUtils.isAscii('a')); + assertTrue(CharUtils.isAscii('A')); + assertTrue(CharUtils.isAscii('3')); + assertTrue(CharUtils.isAscii('-')); + assertTrue(CharUtils.isAscii('\n')); + assertFalse(CharUtils.isAscii(CHAR_COPY)); + + for (int i = 0; i < 255; i++) { + assertEquals(i < 128, CharUtils.isAscii((char) i)); + } + } + + @Test + public void testIsAsciiAlpha_char() { + assertTrue(CharUtils.isAsciiAlpha('a')); + assertTrue(CharUtils.isAsciiAlpha('A')); + assertFalse(CharUtils.isAsciiAlpha('3')); + assertFalse(CharUtils.isAsciiAlpha('-')); + assertFalse(CharUtils.isAsciiAlpha('\n')); + assertFalse(CharUtils.isAsciiAlpha(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if ((i >= 'A' && i <= 'Z') || (i >= 'a' && i <= 'z')) { + assertTrue(CharUtils.isAsciiAlpha((char) i)); + } else { + assertFalse(CharUtils.isAsciiAlpha((char) i)); + } + } + } + + @Test + public void testIsAsciiAlphaLower_char() { + assertTrue(CharUtils.isAsciiAlphaLower('a')); + assertFalse(CharUtils.isAsciiAlphaLower('A')); + assertFalse(CharUtils.isAsciiAlphaLower('3')); + assertFalse(CharUtils.isAsciiAlphaLower('-')); + assertFalse(CharUtils.isAsciiAlphaLower('\n')); + assertFalse(CharUtils.isAsciiAlphaLower(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if (i >= 'a' && i <= 'z') { + assertTrue(CharUtils.isAsciiAlphaLower((char) i)); + } else { + assertFalse(CharUtils.isAsciiAlphaLower((char) i)); + } + } + } + + @Test + public void testIsAsciiAlphanumeric_char() { + assertTrue(CharUtils.isAsciiAlphanumeric('a')); + assertTrue(CharUtils.isAsciiAlphanumeric('A')); + assertTrue(CharUtils.isAsciiAlphanumeric('3')); + assertFalse(CharUtils.isAsciiAlphanumeric('-')); + assertFalse(CharUtils.isAsciiAlphanumeric('\n')); + assertFalse(CharUtils.isAsciiAlphanumeric(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if ((i >= 'A' && i <= 'Z') || (i >= 'a' && i <= 'z') || (i >= '0' && i <= '9')) { + assertTrue(CharUtils.isAsciiAlphanumeric((char) i)); + } else { + assertFalse(CharUtils.isAsciiAlphanumeric((char) i)); + } + } + } + + @Test + public void testIsAsciiAlphaUpper_char() { + assertFalse(CharUtils.isAsciiAlphaUpper('a')); + assertTrue(CharUtils.isAsciiAlphaUpper('A')); + assertFalse(CharUtils.isAsciiAlphaUpper('3')); + assertFalse(CharUtils.isAsciiAlphaUpper('-')); + assertFalse(CharUtils.isAsciiAlphaUpper('\n')); + assertFalse(CharUtils.isAsciiAlphaUpper(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if (i >= 'A' && i <= 'Z') { + assertTrue(CharUtils.isAsciiAlphaUpper((char) i)); + } else { + assertFalse(CharUtils.isAsciiAlphaUpper((char) i)); + } + } + } + + @Test + public void testIsAsciiControl_char() { + assertFalse(CharUtils.isAsciiControl('a')); + assertFalse(CharUtils.isAsciiControl('A')); + assertFalse(CharUtils.isAsciiControl('3')); + assertFalse(CharUtils.isAsciiControl('-')); + assertTrue(CharUtils.isAsciiControl('\n')); + assertFalse(CharUtils.isAsciiControl(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if (i < 32 || i == 127) { + assertTrue(CharUtils.isAsciiControl((char) i)); + } else { + assertFalse(CharUtils.isAsciiControl((char) i)); + } + } + } + + @Test + public void testIsAsciiNumeric_char() { + assertFalse(CharUtils.isAsciiNumeric('a')); + assertFalse(CharUtils.isAsciiNumeric('A')); + assertTrue(CharUtils.isAsciiNumeric('3')); + assertFalse(CharUtils.isAsciiNumeric('-')); + assertFalse(CharUtils.isAsciiNumeric('\n')); + assertFalse(CharUtils.isAsciiNumeric(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if (i >= '0' && i <= '9') { + assertTrue(CharUtils.isAsciiNumeric((char) i)); + } else { + assertFalse(CharUtils.isAsciiNumeric((char) i)); + } + } + } + + @Test + public void testIsAsciiPrintable_char() { + assertTrue(CharUtils.isAsciiPrintable('a')); + assertTrue(CharUtils.isAsciiPrintable('A')); + assertTrue(CharUtils.isAsciiPrintable('3')); + assertTrue(CharUtils.isAsciiPrintable('-')); + assertFalse(CharUtils.isAsciiPrintable('\n')); + assertFalse(CharUtils.isAsciiPrintable(CHAR_COPY)); + + for (int i = 0; i < 196; i++) { + if (i >= 32 && i <= 126) { + assertTrue(CharUtils.isAsciiPrintable((char) i)); + } else { + assertFalse(CharUtils.isAsciiPrintable((char) i)); + } + } + } + + @Test + public void testToChar_Character() { + assertEquals('A', CharUtils.toChar(CHARACTER_A)); + assertEquals('B', CharUtils.toChar(CHARACTER_B)); + assertThrows(NullPointerException.class, () -> CharUtils.toChar((Character) null)); + } + + @Test + public void testToChar_Character_char() { + assertEquals('A', CharUtils.toChar(CHARACTER_A, 'X')); + assertEquals('B', CharUtils.toChar(CHARACTER_B, 'X')); + assertEquals('X', CharUtils.toChar((Character) null, 'X')); + } + + @Test + public void testToChar_String() { + assertEquals('A', CharUtils.toChar("A")); + assertEquals('B', CharUtils.toChar("BA")); + assertThrows(NullPointerException.class, () -> CharUtils.toChar((String) null)); + assertThrows(IllegalArgumentException.class, () -> CharUtils.toChar("")); + } + + @Test + public void testToChar_String_char() { + assertEquals('A', CharUtils.toChar("A", 'X')); + assertEquals('B', CharUtils.toChar("BA", 'X')); + assertEquals('X', CharUtils.toChar("", 'X')); + assertEquals('X', CharUtils.toChar((String) null, 'X')); + } + + @SuppressWarnings("deprecation") // intentional test of deprecated method + @Test + public void testToCharacterObject_char() { + assertEquals(Character.valueOf('a'), CharUtils.toCharacterObject('a')); + assertSame(CharUtils.toCharacterObject('a'), CharUtils.toCharacterObject('a')); + + for (int i = 0; i < 128; i++) { + final Character ch = CharUtils.toCharacterObject((char) i); + final Character ch2 = CharUtils.toCharacterObject((char) i); + assertSame(ch, ch2); + assertEquals(i, ch.charValue()); + } + for (int i = 128; i < 196; i++) { + final Character ch = CharUtils.toCharacterObject((char) i); + final Character ch2 = CharUtils.toCharacterObject((char) i); + assertEquals(ch, ch2); + assertNotSame(ch, ch2); + assertEquals(i, ch.charValue()); + assertEquals(i, ch2.charValue()); + } + assertSame(CharUtils.toCharacterObject("a"), CharUtils.toCharacterObject('a')); + } + + @Test + public void testToCharacterObject_String() { + assertNull(CharUtils.toCharacterObject(null)); + assertNull(CharUtils.toCharacterObject("")); + assertEquals(Character.valueOf('a'), CharUtils.toCharacterObject("a")); + assertEquals(Character.valueOf('a'), CharUtils.toCharacterObject("abc")); + assertSame(CharUtils.toCharacterObject("a"), CharUtils.toCharacterObject("a")); + } + + @Test + public void testToIntValue_char() { + assertEquals(0, CharUtils.toIntValue('0')); + assertEquals(1, CharUtils.toIntValue('1')); + assertEquals(2, CharUtils.toIntValue('2')); + assertEquals(3, CharUtils.toIntValue('3')); + assertEquals(4, CharUtils.toIntValue('4')); + assertEquals(5, CharUtils.toIntValue('5')); + assertEquals(6, CharUtils.toIntValue('6')); + assertEquals(7, CharUtils.toIntValue('7')); + assertEquals(8, CharUtils.toIntValue('8')); + assertEquals(9, CharUtils.toIntValue('9')); + assertThrows(IllegalArgumentException.class, () -> CharUtils.toIntValue('a')); + } + + @Test + public void testToIntValue_char_int() { + assertEquals(0, CharUtils.toIntValue('0', -1)); + assertEquals(3, CharUtils.toIntValue('3', -1)); + assertEquals(-1, CharUtils.toIntValue('a', -1)); + } + + @Test + public void testToIntValue_Character() { + assertEquals(0, CharUtils.toIntValue(Character.valueOf('0'))); + assertEquals(3, CharUtils.toIntValue(Character.valueOf('3'))); + assertThrows(NullPointerException.class, () -> CharUtils.toIntValue(null)); + assertThrows(IllegalArgumentException.class, () -> CharUtils.toIntValue(CHARACTER_A)); + } + + @Test + public void testToIntValue_Character_int() { + assertEquals(0, CharUtils.toIntValue(Character.valueOf('0'), -1)); + assertEquals(3, CharUtils.toIntValue(Character.valueOf('3'), -1)); + assertEquals(-1, CharUtils.toIntValue(Character.valueOf('A'), -1)); + assertEquals(-1, CharUtils.toIntValue(null, -1)); + } + + @Test + public void testToString_char() { + assertEquals("a", CharUtils.toString('a')); + assertSame(CharUtils.toString('a'), CharUtils.toString('a')); + + for (int i = 0; i < 128; i++) { + final String str = CharUtils.toString((char) i); + final String str2 = CharUtils.toString((char) i); + assertSame(str, str2); + assertEquals(1, str.length()); + assertEquals(i, str.charAt(0)); + } + for (int i = 128; i < 196; i++) { + final String str = CharUtils.toString((char) i); + final String str2 = CharUtils.toString((char) i); + assertEquals(str, str2); + assertNotSame(str, str2); + assertEquals(1, str.length()); + assertEquals(i, str.charAt(0)); + assertEquals(1, str2.length()); + assertEquals(i, str2.charAt(0)); + } + } + + @Test + public void testToString_Character() { + assertNull(CharUtils.toString(null)); + assertEquals("A", CharUtils.toString(CHARACTER_A)); + assertSame(CharUtils.toString(CHARACTER_A), CharUtils.toString(CHARACTER_A)); + } + + @Test + public void testToUnicodeEscaped_char() { + assertEquals("\\u0041", CharUtils.unicodeEscaped('A')); + assertEquals("\\u004c", CharUtils.unicodeEscaped('L')); + + for (int i = 0; i < 196; i++) { + final String str = CharUtils.unicodeEscaped((char) i); + assertEquals(6, str.length()); + final int val = Integer.parseInt(str.substring(2), 16); + assertEquals(i, val); + } + assertEquals("\\u0999", CharUtils.unicodeEscaped((char) 0x999)); + assertEquals("\\u1001", CharUtils.unicodeEscaped((char) 0x1001)); + } + + @Test + public void testToUnicodeEscaped_Character() { + assertNull(CharUtils.unicodeEscaped(null)); + assertEquals("\\u0041", CharUtils.unicodeEscaped(CHARACTER_A)); + } +} |