public void Base64BytesDecodeTest(int count)
        {
            var outputBytes = new byte[count];
            var r           = new Random(count);

            r.NextBytes(outputBytes);
            var base64String = Convert.ToBase64String(outputBytes);
            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      = Base64Convert.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, Base64Convert.GetBytesCount(inputBuffer, inputOffset, base64Buffer.Length));
            Assert.Equal(outputBytes.Length, written);
            Assert.Equal(outputBytes.Length, outputUsed);
            Assert.Equal(base64Buffer.Length, inputUsed);
            Assert.Equal(outputBytes, actualOutput);
        }
        public void Base64ToBufferConvertTest(int count)
        {
            var expectedBuffer = new byte[count];
            var r = new Random(count);

            r.NextBytes(expectedBuffer);
            var expectedBase64String = Convert.ToBase64String(expectedBuffer);
            var expectedBase64Chars  = expectedBase64String.ToCharArray();


            var inputOffset = r.Next(0, 100);
            var inputBuffer = new char[inputOffset + expectedBase64Chars.Length + inputOffset];

            expectedBase64Chars.CopyTo(inputBuffer, inputOffset);
            var inputString = new string('a', inputOffset) + expectedBase64String + new string('a', inputOffset);

            // base64 string -> buffer
            var outputBuffer = Base64Convert.ToBytes(inputString, inputOffset, expectedBase64String.Length);

            Assert.Equal(expectedBuffer, outputBuffer);

            // base64 buffer -> buffer
            outputBuffer = Base64Convert.ToBytes(inputBuffer, inputOffset, expectedBase64Chars.Length);
            Assert.Equal(expectedBuffer, outputBuffer);

            // base64 buffer -> buffer (copy)
            outputBuffer = new byte[expectedBuffer.Length];
            Base64Convert.Decode(new ArraySegment <char>(inputBuffer, inputOffset, expectedBase64Chars.Length), new ArraySegment <byte>(outputBuffer));
            Assert.Equal(expectedBuffer, outputBuffer);

            // base64 buffer -> buffer (copy)
            outputBuffer = new byte[expectedBuffer.Length];
            Base64Convert.Decode(inputString, inputOffset, expectedBase64Chars.Length, new ArraySegment <byte>(outputBuffer));
            Assert.Equal(expectedBuffer, outputBuffer);
        }
        public void Decode_GivenUrlSafeFlag_ReturnsPlainText()
        {
            var encoded = Encoding.UTF8.GetBytes("ocu7BkU2bu1mq-yB2dL_4A");
            var bytes   = Base64Convert.Decode(encoded);

            bytes.Should().BeEquivalentTo(new byte[]
            {
                161, 203, 187, 6,
                69, 54, 110, 237,
                102, 171, 236, 129,
                217, 210, 255, 224
            });
        }
 public void DecodeString_GivenEncodedStringAndUrlSafeFlag_ReturnsPlainText(string base64, string expected)
 {
     Base64Convert.Decode(base64).Should().Be(expected);
 }
Example #5
0
 public string DecodeUsingBase64Convert()
 {
     return(Base64Convert.Decode(_data));
 }