@Test
void testHexString() {

    byte[] zeroArray = new byte[16];
    assertThat(ByteUtils.byteArrayToHexString(zeroArray)).isEqualTo("00000000000000000000000000000000");
    byte[] emptyArray = {};
    assertThat(ByteUtils.byteArrayToHexString(emptyArray)).isEqualTo("");
    byte[] zeroByte = {(byte) 0x00};
    assertThat(ByteUtils.byteArrayToHexString(zeroByte)).isEqualTo("00");
    byte[] fullByte = {(byte) 0xFF};
    assertThat(ByteUtils.byteArrayToHexString(fullByte)).isEqualTo("FF");
    byte[] leadingZero = {(byte) 0x0F};
    assertThat(ByteUtils.byteArrayToHexString(leadingZero)).isEqualTo("0F");
    byte[] longLeadingZero = {(byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x11};
    assertThat(ByteUtils.byteArrayToHexString(longLeadingZero)).isEqualTo("00000000000011");
    byte[] trailingZero = {(byte) 0x11, (byte) 0x00};
    assertThat(ByteUtils.byteArrayToHexString(trailingZero)).isEqualTo("1100");
    byte[] longTrailingZero = new byte[16];
    longTrailingZero[0] = (byte) 0xFF;
    assertThat(ByteUtils.byteArrayToHexString(longTrailingZero)).isEqualTo("FF000000000000000000000000000000");
    byte[] basicArray =
        {(byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0x00, (byte) 0xFF, (byte) 0xF0, (byte) 0x0F, (byte) 0xFF};
    assertThat(ByteUtils.byteArrayToHexString(basicArray)).isEqualTo("FFFFFF00FFF00FFF");
    byte[] basicVariedArray =
        {(byte) 0x82, (byte) 0xF2, (byte) 0xAB, (byte) 0xA4, (byte) 0xDE, (byte) 0x15, (byte) 0x19, (byte) 0x11};
    assertThat(ByteUtils.byteArrayToHexString(basicVariedArray)).isEqualTo("82F2ABA4DE151911");
}