diff --git a/src/UglyToad.PdfPig.Tests/Util/HexTests.cs b/src/UglyToad.PdfPig.Tests/Util/HexTests.cs new file mode 100644 index 00000000..0e9ac6b4 --- /dev/null +++ b/src/UglyToad.PdfPig.Tests/Util/HexTests.cs @@ -0,0 +1,37 @@ +namespace UglyToad.PdfPig.Tests.Util +{ + using System.Collections.Generic; + using PdfPig.Util; + using Xunit; + + public class HexTests + { + public static IEnumerable TestData => new[] + { + new object[] {new byte[0], string.Empty}, + new object[] {new byte[] {37}, "25"}, + new object[] {new byte[] {0}, "00"}, + new object[] {new byte[] {255}, "FF"}, + new object[] + { + new byte[] + { + 37, 80, 68, + 70, 45, 49, + 46, 54, 13, + 37 + }, + "255044462D312E360D25" + } + }; + + [Theory] + [MemberData(nameof(TestData))] + public void ConvertsToString(byte[] input, string expected) + { + var result = Hex.GetString(input); + + Assert.Equal(expected, result); + } + } +} diff --git a/src/UglyToad.PdfPig/Util/Hex.cs b/src/UglyToad.PdfPig/Util/Hex.cs index 5c4fe1ab..f119a4db 100644 --- a/src/UglyToad.PdfPig/Util/Hex.cs +++ b/src/UglyToad.PdfPig/Util/Hex.cs @@ -1,6 +1,6 @@ namespace UglyToad.PdfPig.Util { - using System.IO; + using System; using System.Text; /** @@ -8,7 +8,7 @@ * * @author John Hewson */ - internal class Hex + internal static class Hex { /** * for hex conversion. @@ -16,17 +16,18 @@ * https://stackoverflow.com/questions/2817752/java-code-to-convert-byte-to-hexadecimal * */ - private static readonly byte[] HexBytes = { (byte) '0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', (byte)'6', (byte)'7', - (byte) '8', (byte) '9', (byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F' }; private static readonly char[] HexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - - private Hex() { } - - /** - * Returns a hex string of the given byte array. - */ + + /// + /// Returns a hex string for the given byte array. + /// public static string GetString(byte[] bytes) { + if (bytes == null) + { + throw new ArgumentNullException(nameof(bytes)); + } + var stringBuilder = new StringBuilder(bytes.Length * 2); foreach (var b in bytes) @@ -37,39 +38,14 @@ return stringBuilder.ToString(); } - /** - * Writes the given byte as hex value to the given output stream. - * @param b the byte to be written - * @param output the output stream to be written to - * @throws IOException exception if anything went wrong - */ - public static void WriteHexByte(byte b, BinaryWriter output) - { - output.Write(HexBytes[GetHighNibble(b)]); - output.Write(HexBytes[GetLowNibble(b)]); - } - - /** - * GetLongOrDefault the high nibble of the given byte. - * - * @param b the given byte - * @return the high nibble - */ private static int GetHighNibble(byte b) { return (b & 0xF0) >> 4; } - /** - * GetLongOrDefault the low nibble of the given byte. - * - * @param b the given byte - * @return the low nibble - */ private static int GetLowNibble(byte b) { return b & 0x0F; } } - }