Example #1
0
        public void SlicedSequence(byte b0, byte b1, byte b2, byte b3)
        {
            var array    = new[] { b0, b1, b2, b3 };
            var str      = Encoding.UTF8.GetString(array);
            var encoding = new Utf8TokenEncoding();

            for (var i = 1; i < array.Length; ++i)
            {
                for (var j = 1; j < array.Length - i; ++j)
                {
                    var span0  = new Span <byte>(array, 0, i);
                    var span1  = new Span <byte>(array, i, j);
                    var span2  = new Span <byte>(array, i + j, array.Length - i - j);
                    var output = new char[5];

                    var estimatedLength0 = encoding.EstimateCharCount(span0);
                    var res0Len          = encoding.GetString(span0, new Span <char>(output, 0, estimatedLength0));
                    var res0             = new Span <char>(output, 0, res0Len).ToString();

                    var estimatedLength1 = encoding.EstimateCharCount(span1);
                    var res1Len          = encoding.GetString(span1, new Span <char>(output, res0Len, estimatedLength1));
                    var res1             = new Span <char>(output, res0Len, res1Len).ToString();


                    var estimatedLength2 = encoding.EstimateCharCount(span2);
                    var res2Len          = encoding.GetString(span2, new Span <char>(output, res0Len + res1Len, estimatedLength2));
                    var res2             = new Span <char>(output, res0Len + res1Len, res2Len).ToString();

                    Assert.AreEqual(str, res0 + res1 + res2);
                }
            }
        }
        private void TestEncoding(byte[] source)
        {
            var encoding    = new Utf8TokenEncoding();
            var blockSize   = 1024;
            var blockOutput = new char[1024];

            for (var i = 0; i < source.Length; i += blockSize)
            {
                encoding.GetString(new ReadOnlySpan <byte>(source, i, Math.Min(blockSize, source.Length - i)),
                                   new Span <char>(blockOutput));
            }
        }
Example #3
0
        public void IncompleteUtfSequence_SequenceTerminatedAndNextCharacterParsed()
        {
            var array = new byte[] { 0b11110000, 0b10010000, 0b10001101, 0b10000000 };
            var str   = Encoding.UTF8.GetString(array);

            array[array.Length - 1] = (byte)';';
            var encoding = new Utf8TokenEncoding();
            var span0    = new Span <byte>(array);
            var output   = new char[encoding.EstimateCharCount(span0)];
            var res0Len  = encoding.GetString(span0, new Span <char>(output, 0, output.Length));

            Assert.AreEqual(str + ";", new Span <char>(output, 0, res0Len).ToString());
        }