コード例 #1
0
        public unsafe void DecodePtrToPtrTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var encoder     = (BaseNEncoder)encoding.GetEncoder();
            var inputBuffer = new byte[encodedData.Length];

            for (var i = 0; i < encodedData.Length; i++)
            {
                inputBuffer[i] = (byte)encodedData[i];
            }
            var input        = new ArraySegment <byte>(inputBuffer, 0, inputBuffer.Length);
            var outputBuffer = new byte[plainTextData.Length];
            var output       = new ArraySegment <byte>(outputBuffer, 0, outputBuffer.Length);
            var inputUsed    = 0;
            var outputUsed   = 0;

            fixed(byte *inputPtr = inputBuffer)
            fixed(byte *outputPtr = outputBuffer)
            {
                encoder.Convert(inputPtr, inputBuffer.Length, outputPtr, outputBuffer.Length, true, out inputUsed, out outputUsed, out var completed);
                Assert.True(completed);
            }

            Assert.Equal(input.Count, inputUsed);
            Assert.Equal(output.Count, outputUsed);
            Assert.Equal(plainTextData, outputBuffer);
        }
コード例 #2
0
        public void GetCharsTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var actual    = encoding.GetChars(plainTextData);
            var charCount = encoding.GetCharCount(plainTextData);

            Assert.Equal(encodedData, actual);
            Assert.Equal(charCount, actual.Length);
        }
コード例 #3
0
        public void ToBytesFromCharArrayTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var actual     = encoding.GetBytes(encodedData.ToCharArray());
            var bytesCount = encoding.GetByteCount(encodedData.ToCharArray(), 0, encodedData.Length);

            Assert.Equal(plainTextData, actual);
            Assert.Equal(bytesCount, actual.Length);
        }
コード例 #4
0
        public void GetMaxCharCountTest()
        {
            var alphabet      = BaseNAlphabet.Base64UrlAlphabet;
            var baseNEncoding = new BaseNEncoding(alphabet, "name");
            var expected      = alphabet.DecodingBlockSize * 5;
            var actual        = baseNEncoding.GetMaxCharCount(alphabet.EncodingBlockSize * 5);

            Assert.Equal(expected, actual);
        }
コード例 #5
0
        public void ToBytesFromCharArrayPartTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var random     = new Random(9375220);
            var input      = PadData(encodedData, out var offset, out var extra, random);
            var actual     = encoding.GetBytes(input.ToCharArray(), offset, encodedData.Length);
            var bytesCount = encoding.GetByteCount(input.ToCharArray(), offset, encodedData.Length);

            Assert.Equal(plainTextData, actual);
            Assert.Equal(bytesCount, actual.Length);
        }
コード例 #6
0
        public void ConstructorTest()
        {
            var expectedAlphabet     = BaseNAlphabet.Base64UrlAlphabet;
            var expectedEncodingName = "base64";
            var baseNEncoding        = new BaseNEncoding(expectedAlphabet, expectedEncodingName);

            Assert.Equal(expectedAlphabet, baseNEncoding.Alphabet);
            Assert.Equal(expectedEncodingName, baseNEncoding.EncodingName);
            Assert.Equal(expectedAlphabet.EncodingBlockSize == 1, baseNEncoding.IsSingleByte);
        }
コード例 #7
0
        public void GetByteCountString()
        {
            var base64String  = "80_poA1Ahss=";
            var base64Bytes   = new byte[] { 243, 79, 233, 160, 13, 64, 134, 203 };
            var baseNEncoding = new BaseNEncoding(BaseNAlphabet.Base64UrlAlphabet, "name");

            var actual = baseNEncoding.GetByteCount(base64String, 0, base64String.Length);

            Assert.Equal(base64Bytes.Length, actual);
        }
コード例 #8
0
        public void GetCharsPartTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var random    = new Random(9375220);
            var input     = PadData(plainTextData, out var offset, out var extra, random);
            var actual    = encoding.GetChars(input, offset, plainTextData.Length);
            var charCount = encoding.GetCharCount(input, offset, plainTextData.Length);

            Assert.Equal(encodedData, actual);
            Assert.Equal(charCount, actual.Length);
        }
コード例 #9
0
        public void GetCharsByteArrayTest()
        {
            var base64String  = "80_poA1Ahss=";
            var base64Bytes   = new byte[] { 243, 79, 233, 160, 13, 64, 134, 203 };
            var baseNEncoding = new BaseNEncoding(BaseNAlphabet.Base64UrlAlphabet, "name");
            var actualChars   = new char[base64String.Length];

            baseNEncoding.GetChars(base64Bytes, 0, base64Bytes.Length, actualChars, 0);

            Assert.Equal(base64String.ToCharArray(), actualChars);
        }
コード例 #10
0
        public void ToBytesFromStringTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var actual = encoding.GetBytes(encodedData);

#if NETCOREAPP
            var bytesCount = encoding.GetByteCount(encodedData, 0, encodedData.Length);
#else
            var bytesCount = encoding.GetByteCount(encodedData.ToCharArray(), 0, encodedData.Length);
#endif
            Assert.Equal(plainTextData, actual);
            Assert.Equal(bytesCount, actual.Length);
        }
コード例 #11
0
        public void GetCharsToBufferTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var decoder      = (BaseNDecoder)encoding.GetDecoder();
            var random       = new Random(9375220);
            var input        = PadData(plainTextData, out var offset, out var extra, random);
            var output       = new char[encodedData.Length + 2];
            var encodedChars = decoder.GetChars(input, offset, plainTextData.Length, output, 1);
            var charCount    = decoder.GetCharCount(input, offset, plainTextData.Length, true);

            Assert.Equal(encodedData, new string(output, 1, output.Length - 2));
            Assert.Equal(charCount, encodedChars);
        }
コード例 #12
0
        public void GetCharsSpanBytesTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var decoder      = (BaseNDecoder)encoding.GetDecoder();
            var outputBuffer = new char[encodedData.Length];
            var input        = (Span <byte>)plainTextData;
            var output       = (Span <char>)outputBuffer;

            decoder.GetChars(input, output, true);
            var charCount = decoder.GetCharCount(input, true);

            Assert.Equal(encodedData, new string(output));
            Assert.Equal(outputBuffer.Length, charCount);
        }
コード例 #13
0
        public unsafe void GetByteCountPtrTest()
        {
            var base64String  = "80_poA1Ahss=";
            var base64Bytes   = new byte[] { 243, 79, 233, 160, 13, 64, 134, 203 };
            var baseNEncoding = new BaseNEncoding(BaseNAlphabet.Base64UrlAlphabet, "name");

            fixed(char *charsPtr = base64String)
            {
                var actual = baseNEncoding.GetByteCount(charsPtr, base64String.Length);

                Assert.Equal(base64Bytes.Length, actual);
            }
        }
コード例 #14
0
        public void EncodeStreamTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var output = new MemoryStream();

            using (var encodingStream = output.BaseNEncode(encoding))
            {
                encodingStream.Write(plainTextData, 0, plainTextData.Length);
                encodingStream.Close();                 // will flush remaining data to output stream
            }

            var outputBytes = output.ToArray();

            Assert.Equal(encodedData, Encoding.ASCII.GetString(outputBytes));
        }
コード例 #15
0
        public void EncodeSpanToSpanTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var decoder      = (BaseNDecoder)encoding.GetDecoder();
            var outputBuffer = new byte[encodedData.Length];
            var input        = (Span <byte>)plainTextData;
            var output       = (Span <byte>)outputBuffer;

            decoder.Convert(input, output, true, out var inputUsed, out var outputUsed, out var completed);

            Assert.Equal(plainTextData.Length, inputUsed);
            Assert.Equal(outputBuffer.Length, outputUsed);
            Assert.Equal(encodedData, new string(outputBuffer.Select(b => (char)b).ToArray(), 0, outputBuffer.Length));
            Assert.True(completed);
        }
コード例 #16
0
        public void EncodeBytesToBytesTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var input        = new ArraySegment <byte>(plainTextData, 0, plainTextData.Length);
            var outputBuffer = new byte[encodedData.Length];
            var output       = new ArraySegment <byte>(outputBuffer, 0, outputBuffer.Length);

            var decoder = (BaseNDecoder)encoding.GetDecoder();

            decoder.Convert(input.Array, input.Offset, input.Count, output.Array, output.Offset, output.Count, true, out var inputUsed, out var outputUsed, out var completed);

            Assert.Equal(input.Count, inputUsed);
            Assert.Equal(output.Count, outputUsed);
            Assert.Equal(encodedData, new string(outputBuffer.Select(b => (char)b).ToArray(), 0, output.Count));
            Assert.True(completed);
        }
コード例 #17
0
        public void DecodeCharsToBytesTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var input        = new ArraySegment <char>(encodedData.ToCharArray(), 0, encodedData.Length);
            var outputBuffer = new byte[plainTextData.Length];
            var output       = new ArraySegment <byte>(outputBuffer, 0, outputBuffer.Length);

            var encoder = (BaseNEncoder)encoding.GetEncoder();

            encoder.Convert(input.Array, input.Offset, input.Count, output.Array, output.Offset, output.Count, true, out var inputUsed, out var outputUsed, out var completed);

            Assert.Equal(input.Count, inputUsed);
            Assert.Equal(output.Count, outputUsed);
            Assert.Equal(plainTextData, outputBuffer);
            Assert.True(completed);
        }
コード例 #18
0
        public unsafe void GetCharsPtrTest()
        {
            var base64String  = "80_poA1Ahss=";
            var base64Bytes   = new byte[] { 243, 79, 233, 160, 13, 64, 134, 203 };
            var baseNEncoding = new BaseNEncoding(BaseNAlphabet.Base64UrlAlphabet, "name");
            var actualChars   = new char[base64String.Length];

            fixed(char *charsPtr = actualChars)
            fixed(byte *bytesPtr = base64Bytes)
            {
                baseNEncoding.GetChars(bytesPtr, base64Bytes.Length, charsPtr, actualChars.Length);
            }

            Assert.Equal(base64String.ToCharArray(), actualChars);
        }
コード例 #19
0
        public void DecodeStreamTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var inputBytes = Encoding.ASCII.GetBytes(encodedData.ToCharArray(), 0, encodedData.Length);

            var outputStream = new MemoryStream();

            using (var inputStream = new MemoryStream(inputBytes))
                using (var decodeStream = inputStream.BaseNDecode(encoding))
                {
                    decodeStream.CopyTo(outputStream);
                }

            var outputBytes = outputStream.ToArray();

            Assert.Equal(plainTextData, outputBytes);
        }
コード例 #20
0
        public unsafe void EncodePtrToPtrTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var decoder      = (BaseNDecoder)encoding.GetDecoder();
            var outputBuffer = new byte[encodedData.Length];
            var inputUsed    = 0;
            var outputUsed   = 0;

            fixed(byte *inputPtr = plainTextData)
            fixed(byte *outputPtr = outputBuffer)
            {
                decoder.Convert(inputPtr, plainTextData.Length, outputPtr, outputBuffer.Length, true, out inputUsed, out outputUsed, out var completed);
                Assert.True(completed);
            }

            Assert.Equal(plainTextData.Length, inputUsed);
            Assert.Equal(outputBuffer.Length, outputUsed);
            Assert.Equal(encodedData, new string(outputBuffer.Select(b => (char)b).ToArray(), 0, outputBuffer.Length));
        }
コード例 #21
0
        public void GetBytesSpanCharsTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var encoder     = (BaseNEncoder)encoding.GetEncoder();
            var inputBuffer = new char[encodedData.Length];

            for (var i = 0; i < encodedData.Length; i++)
            {
                inputBuffer[i] = encodedData[i];
            }
            var input        = (Span <char>)inputBuffer;
            var outputBuffer = new byte[plainTextData.Length];
            var output       = (Span <byte>)outputBuffer;

            encoder.GetBytes(input, output, true);
            var byteCount = encoder.GetByteCount(input, true);

            Assert.Equal(plainTextData, outputBuffer);
            Assert.Equal(outputBuffer.Length, byteCount);
        }
コード例 #22
0
        public void DecodeSpanToSpanCharTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var encoder     = (BaseNEncoder)encoding.GetEncoder();
            var inputBuffer = new char[encodedData.Length];

            for (var i = 0; i < encodedData.Length; i++)
            {
                inputBuffer[i] = encodedData[i];
            }
            var input        = (Span <char>)inputBuffer;
            var outputBuffer = new byte[plainTextData.Length];
            var output       = (Span <byte>)outputBuffer;

            encoder.Convert(input, output, true, out var inputUsed, out var outputUsed, out var completed);

            Assert.Equal(inputBuffer.Length, inputUsed);
            Assert.Equal(outputBuffer.Length, outputUsed);
            Assert.Equal(plainTextData, outputBuffer);
            Assert.True(completed);
        }
コード例 #23
0
        public void DecodeBytesToBytesTest(BaseNEncoding encoding, byte[] plainTextData, string encodedData)
        {
            var inputBuffer = new byte[encodedData.Length];

            for (var i = 0; i < encodedData.Length; i++)
            {
                inputBuffer[i] = (byte)encodedData[i];
            }
            var input        = new ArraySegment <byte>(inputBuffer, 0, inputBuffer.Length);
            var outputBuffer = new byte[plainTextData.Length];
            var output       = new ArraySegment <byte>(outputBuffer, 0, outputBuffer.Length);

            var encoder = (BaseNEncoder)encoding.GetEncoder();

            encoder.Convert(input.Array, input.Offset, input.Count, output.Array, output.Offset, output.Count, true, out var inputUsed, out var outputUsed, out var completed);

            Assert.Equal(inputUsed, input.Count);
            Assert.Equal(outputUsed, output.Count);
            Assert.Equal(plainTextData, outputBuffer);
            Assert.True(completed);
        }
コード例 #24
0
        public void ToStringTest()
        {
            var baseNEncoding = new BaseNEncoding(BaseNAlphabet.Base64UrlAlphabet, "name");

            Assert.NotNull(baseNEncoding.ToString());
        }
コード例 #25
0
        public void GetEncoderTest()
        {
            var baseNEncoding = new BaseNEncoding(BaseNAlphabet.Base64UrlAlphabet, "name");

            Assert.NotNull(baseNEncoding.GetEncoder());
        }