From 683f3199bb8900860d9ac7fa4e919a1328885f45 Mon Sep 17 00:00:00 2001 From: thomasduxbury <68503838+thomasduxbury@users.noreply.github.com> Date: Sat, 6 Nov 2021 23:56:30 +0000 Subject: [PATCH] BAEL-5179: Introduction to HexFormat in Java 17 (#11387) --- .../ByteHexadecimalConversionUnitTest.java | 23 +++++++++++ ...tiveTypeHexadecimalConversionUnitTest.java | 22 ++++++++++ .../hexformat/StringFormattingUnitTest.java | 15 +++++++ .../UppercaseLowercaseOutputUnitTest.java | 40 +++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/ByteHexadecimalConversionUnitTest.java create mode 100644 core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/PrimitiveTypeHexadecimalConversionUnitTest.java create mode 100644 core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/StringFormattingUnitTest.java create mode 100644 core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/UppercaseLowercaseOutputUnitTest.java diff --git a/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/ByteHexadecimalConversionUnitTest.java b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/ByteHexadecimalConversionUnitTest.java new file mode 100644 index 0000000000..29b6eb1bee --- /dev/null +++ b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/ByteHexadecimalConversionUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.hexformat; + +import java.util.HexFormat; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ByteHexadecimalConversionUnitTest { + + private HexFormat hexFormat = HexFormat.of(); + + @Test + void givenInitialisedHexFormat_whenHexStringIsPassed_thenByteArrayRepresentationIsReturned() { + byte[] hexBytes = hexFormat.parseHex("ABCDEF0123456789"); + assertArrayEquals(new byte[] { -85, -51, -17, 1, 35, 69, 103, -119 }, hexBytes); + } + + @Test + void givenInitialisedHexFormat_whenByteArrayIsPassed_thenHexStringRepresentationIsReturned() { + String bytesAsString = hexFormat.formatHex(new byte[] { -85, -51, -17, 1, 35, 69, 103, -119}); + assertEquals("abcdef0123456789", bytesAsString); + } +} diff --git a/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/PrimitiveTypeHexadecimalConversionUnitTest.java b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/PrimitiveTypeHexadecimalConversionUnitTest.java new file mode 100644 index 0000000000..6f26a8351c --- /dev/null +++ b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/PrimitiveTypeHexadecimalConversionUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.hexformat; + +import java.util.HexFormat; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class PrimitiveTypeHexadecimalConversionUnitTest { + + private HexFormat hexFormat = HexFormat.of(); + + @Test + void givenInitialisedHexFormat_whenPrimitiveByteIsPassed_thenHexStringRepresentationIsReturned() { + String fromByte = hexFormat.toHexDigits((byte)64); + assertEquals("40", fromByte); + } + + @Test + void givenInitialisedHexFormat_whenPrimitiveLongIsPassed_thenHexStringRepresentationIsReturned() { + String fromLong = hexFormat.toHexDigits(1234_5678_9012_3456L); + assertEquals("000462d53c8abac0", fromLong); + } +} diff --git a/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/StringFormattingUnitTest.java b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/StringFormattingUnitTest.java new file mode 100644 index 0000000000..28189d0e8c --- /dev/null +++ b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/StringFormattingUnitTest.java @@ -0,0 +1,15 @@ +package com.baeldung.hexformat; + +import java.util.HexFormat; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class StringFormattingUnitTest { + + private HexFormat hexFormat = HexFormat.of().withPrefix("[").withSuffix("]").withDelimiter(", "); + + @Test + public void givenInitialisedHexFormatWithFormattedStringOptions_whenByteArrayIsPassed_thenHexStringRepresentationFormattedCorrectlyIsReturned() { + assertEquals("[48], [0c], [11]", hexFormat.formatHex(new byte[] {72, 12, 17})); + } +} diff --git a/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/UppercaseLowercaseOutputUnitTest.java b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/UppercaseLowercaseOutputUnitTest.java new file mode 100644 index 0000000000..c2a33fb4b5 --- /dev/null +++ b/core-java-modules/core-java-17/src/test/java/com/baeldung/hexformat/UppercaseLowercaseOutputUnitTest.java @@ -0,0 +1,40 @@ +package com.baeldung.hexformat; + +import java.util.HexFormat; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class UppercaseLowercaseOutputUnitTest { + + @Test + public void givenInitialisedHexFormat_whenByteArrayIsPassed_thenLowerCaseHexStringRepresentationIsReturned() { + HexFormat hexFormat = HexFormat.of(); + String bytesAsString = hexFormat.formatHex(new byte[] { -85, -51, -17, 1, 35, 69, 103, -119}); + assertTrue(isLowerCase(bytesAsString)); + } + + @Test + public void givenInitialisedHexFormatWithUpperCaseOption_whenByteArrayIsPassed_thenLowerCaseHexStringRepresentationIsReturned() { + HexFormat hexFormat = HexFormat.of().withUpperCase(); + String bytesAsString = hexFormat.formatHex(new byte[] { -85, -51, -17, 1, 35, 69, 103, -119}); + assertTrue(isUpperCase(bytesAsString)); + } + + private boolean isLowerCase(String str) { + char[] charArray = str.toCharArray(); + for (int i=0; i < charArray.length; i++) { + if (Character.isUpperCase(charArray[i])) + return false; + } + return true; + } + + private boolean isUpperCase(String str) { + char[] charArray = str.toCharArray(); + for (int i=0; i < charArray.length; i++) { + if (Character.isLowerCase(charArray[i])) + return false; + } + return true; + } +}