Пример #1
0
        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);
        }
Пример #2
0
        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);
        }