diff --git a/core-java-modules/core-java-string-operations-7/src/test/java/com/baeldung/aboutlength/StringLengthAndByteArrayLengthUnitTest.java b/core-java-modules/core-java-string-operations-7/src/test/java/com/baeldung/aboutlength/StringLengthAndByteArrayLengthUnitTest.java new file mode 100644 index 0000000000..94c855acb9 --- /dev/null +++ b/core-java-modules/core-java-string-operations-7/src/test/java/com/baeldung/aboutlength/StringLengthAndByteArrayLengthUnitTest.java @@ -0,0 +1,49 @@ +package com.baeldung.aboutlength; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.charset.Charset; + +import org.junit.jupiter.api.Test; + +public class StringLengthAndByteArrayLengthUnitTest { + + @Test + void whenStrWithAllAsciiChar_thenStrLengthAndBytesLengthAreEqual() { + String s = "beautiful"; + assertEquals(9, s.length()); + assertEquals(9, s.getBytes().length); + } + + @Test + void whenStrWithUnicodeChar_thenStrLengthAndBytesLengthAreNotEqual() { + assertEquals("f6", Integer.toHexString('ö')); + assertEquals("7f8e", Integer.toHexString('美')); + assertEquals("4e3d", Integer.toHexString('丽')); + + String de = "schöne"; + assertEquals(6, de.length()); + assertEquals(7, de.getBytes().length); + + String cn = "美丽"; + assertEquals(2, cn.length()); + assertEquals(6, cn.getBytes().length); + } + + @Test + void whenUsingUTF_32_thenBytesLengthIs4TimesStrLength() { + Charset UTF_32 = Charset.forName("UTF_32"); + + String en = "beautiful"; + assertEquals(9, en.length()); + assertEquals(9 * 4, en.getBytes(UTF_32).length); + + String de = "schöne"; + assertEquals(6, de.length()); + assertEquals(6 * 4, de.getBytes(UTF_32).length); + + String cn = "美丽"; + assertEquals(2, cn.length()); + assertEquals(2 * 4, cn.getBytes(UTF_32).length); + } +} \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index a661c11749..16d01dd1d3 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -12,6 +12,7 @@ com.baeldung parent-modules 1.0.0-SNAPSHOT + ..