Exemplo n.º 1
0
        static void TestWriteRead(SpanWriterAction writeAction, byte[] checkResult,
                                  SpanReaderAction readAction, SpanReaderAction?skipAction)
        {
            Span <byte> buf = stackalloc byte[1];
            var         sw  = new SpanWriter(buf);

            writeAction(ref sw);
            Assert.Equal(checkResult, sw.GetSpan().ToArray());
            SpanReader sr;

            if (checkResult.Length > 1)
            {
                sw = new SpanWriter(new Span <byte>());
                writeAction(ref sw);
                Assert.Equal(checkResult, sw.GetSpanAndReset().ToArray());
                writeAction(ref sw);
                Assert.Equal(checkResult, sw.GetSpan().ToArray());
            }
            sr = new SpanReader(checkResult);
            readAction(ref sr);
            Assert.True(sr.Eof);
            sw = new SpanWriter();
            writeAction(ref sw);
            writeAction(ref sw);
            Assert.Equal(checkResult.Concat(checkResult).ToArray(), sw.GetByteBufferAndReset().ToByteArray());
            sr = new SpanReader(checkResult.Concat(checkResult).ToArray());
            readAction(ref sr);
            readAction(ref sr);
            if (skipAction != null)
            {
                sr = new SpanReader(checkResult.Concat(checkResult).ToArray());
                skipAction(ref sr);
                readAction(ref sr);
                Assert.True(sr.Eof);
                sr = new SpanReader(checkResult.Concat(checkResult).ToArray());
                readAction(ref sr);
                skipAction(ref sr);
                Assert.True(sr.Eof);
            }
        }