public void HexToBufferConvertTest(int count) { var expectedBuffer = new byte[count]; new Random(count).NextBytes(expectedBuffer); var expectedHexString = BitConverter.ToString(expectedBuffer).Replace("-", "").ToLowerInvariant(); var expectedHexBuffer = expectedHexString.ToCharArray(); // hex string -> buffer var buffer = HexConvert.ToBytes(expectedHexString, 0, expectedHexString.Length); Assert.Equal(expectedBuffer, buffer); // hex buffer -> buffer buffer = HexConvert.ToBytes(expectedHexBuffer, 0, expectedHexBuffer.Length); Assert.Equal(expectedBuffer, buffer); // hex buffer -> buffer (copy) buffer = new byte[expectedBuffer.Length]; HexConvert.Decode(new ArraySegment <char>(expectedHexBuffer, 0, expectedHexBuffer.Length), new ArraySegment <byte>(buffer)); Assert.Equal(expectedBuffer, buffer); // hex buffer -> buffer (copy) buffer = new byte[expectedBuffer.Length]; HexConvert.Decode(expectedHexString, 0, expectedHexBuffer.Length, new ArraySegment <byte>(buffer)); Assert.Equal(expectedBuffer, buffer); }
public void HexBytesDecodeTest(int count) { var outputBytes = new byte[count]; var r = new Random(count); r.NextBytes(outputBytes); var base64String = BitConverter.ToString(outputBytes).Replace("-", "").ToLowerInvariant(); var base64Buffer = base64String.ToCharArray().Select(v => (byte)v).ToArray(); // transform block var inputOffset = r.Next(0, 100); var inputBuffer = new byte[inputOffset + base64Buffer.Length + inputOffset]; Buffer.BlockCopy(base64Buffer, 0, inputBuffer, inputOffset, base64Buffer.Length); var outputOffset = r.Next(0, 100); var outputBuffer = new byte[outputOffset + outputBytes.Length]; var written = HexConvert.Decode(new ArraySegment <byte>(inputBuffer, inputOffset, base64Buffer.Length), new ArraySegment <byte>(outputBuffer, outputOffset, outputBuffer.Length - outputOffset), out var inputUsed, out var outputUsed); var actualOutput = outputBuffer.Skip(outputOffset).ToArray(); Assert.Equal(outputBytes.Length, written); Assert.Equal(outputBytes.Length, outputUsed); Assert.Equal(base64Buffer.Length, inputUsed); Assert.Equal(outputBytes, actualOutput); }