/// <inheritdoc/>
        public override byte[] GetBytes(ReadOnlySpan <char> chars)
        {
            // GetBytes converts in two passes so that it can perform a single allocation
            // for the final array of bytes...

            int bytesRequired = GetByteCount(chars);

            if (bytesRequired == 0)
            {
                return(Array.Empty <byte>());
            }

            var outputBytes = new byte[bytesRequired];

            var decoder       = new Base32Decoder(Settings);
            var convertStatus = decoder.ConvertData(chars, 0, chars.Length,
                                                    outputBytes.AsSpan(), 0, outputBytes.Length,
                                                    true,
                                                    out var inputUsed,
                                                    out var outputUsed);

            System.Diagnostics.Debug.Assert(convertStatus);
            System.Diagnostics.Debug.Assert(inputUsed == chars.Length);
            System.Diagnostics.Debug.Assert(outputUsed == outputBytes.Length);

            return(outputBytes);
        }
        /// <inheritdoc/>
        public override int GetByteCount(ReadOnlySpan <char> chars)
        {
            var         decoder      = new Base32Decoder(Settings);
            Span <byte> outputBuffer = stackalloc byte[1024];

            int           inputOffset  = 0;
            int           inputCount   = chars.Length;
            int           outputLength = 0;
            ConvertStatus convertStatus;

            do
            {
                convertStatus = decoder.ConvertData(chars, inputOffset, inputCount,
                                                    outputBuffer, 0, outputBuffer.Length,
                                                    true,
                                                    out var inputUsed,
                                                    out var outputUsed);

                outputLength += outputUsed;
                inputOffset  += inputUsed;
                inputCount   -= inputUsed;
            } while (!convertStatus);

            return(outputLength);
        }
Exemple #3
0
        public void ConstructorDefaultTest()
        {
            Base32Decoder decoder = new Base32Decoder();

            Common.AreEqual(Base32Encoder.StandardAlphabet, decoder.Alphabet);
            Assert.AreEqual(Base32Encoder.StandardPadding, decoder.Padding);
        }
Exemple #4
0
        public void ConstructorAlphabetTest()
        {
            char[]        testAlphabet = new char[] { 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '1', '2', '3', '4', '5', '6' };
            Base32Decoder decoder      = new Base32Decoder(testAlphabet);

            Common.AreEqual(testAlphabet, decoder.Alphabet);
            Assert.AreEqual(Base32Encoder.StandardPadding, decoder.Padding);
        }
Exemple #5
0
        public void PaddingTest()
        {
            Base32Decoder decoder     = new Base32Decoder();
            char          testPadding = '?';

            decoder.Padding = testPadding;
            Assert.AreEqual(testPadding, decoder.Padding);
        }
Exemple #6
0
        public void AlphabetTest()
        {
            char[]        testAlphabet = new char[] { 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M', '1', '2', '3', '4', '5', '6' };
            Base32Decoder decoder      = new Base32Decoder();

            decoder.Alphabet = testAlphabet;
            Common.AreEqual(testAlphabet, decoder.Alphabet);
        }
Exemple #7
0
        public void GetInputEncodingTest()
        {
            Base32Decoder decoder = new Base32Decoder();

            System.Text.Encoding encoding = decoder.GetInputEncoding();
            Assert.IsNotNull(encoding);
            Assert.AreEqual(System.Text.Encoding.ASCII, encoding);
        }
Exemple #8
0
        public void GetEncoderTest()
        {
            Base32Decoder decoder = new Base32Decoder();
            Encoder       encoder = decoder.GetEncoder();

            Assert.IsNotNull(encoder);
            Assert.IsInstanceOf(typeof(Base32Encoder), encoder);
        }
 public Decoder(Base32Settings settings)
 {
     _codecDecoder = new Base32Decoder(settings);
 }
Exemple #10
0
        public void AlphabetShortTest()
        {
            Base32Decoder decoder = new Base32Decoder();

            decoder.Alphabet = new char[1];
        }
Exemple #11
0
        public void AlphabetNullTest()
        {
            Base32Decoder decoder = new Base32Decoder();

            decoder.Alphabet = null;
        }
Exemple #12
0
        public void InvalidCharacterTest()
        {
            Base32Decoder decoder = new Base32Decoder();

            decoder.Decode("ABCDE!");
        }
Exemple #13
0
        public void IsCaseSensitiveTest()
        {
            Base32Decoder decoder = new Base32Decoder();

            Assert.IsFalse(decoder.IsCaseSensitive);
        }