public void ThrowsForInvalidParameters(int arrayLength, int offset, int length) { OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); var array = new byte[arrayLength]; for (var i = 0; i < array.Length; i++) { array[i] = (byte)(i + 1); } writer.Write(new Span <byte>(array, 0, 0)); writer.Write(new Span <byte>(array, array.Length, 0)); try { writer.Write(new Span <byte>(array, offset, length)); Assert.True(false); } catch (Exception ex) { Assert.True(ex is ArgumentOutOfRangeException); } writer.Write(new Span <byte>(array, 0, array.Length)); writer.Commit(); Assert.Equal(array, Read()); }
public void CanWriteIntoHeadlessBuffer() { OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); writer.Write(new byte[] { 1, 2, 3 }); writer.Commit(); Assert.Equal(new byte[] { 1, 2, 3 }, Read()); }
public void CanWriteWithOffsetAndLenght(int alloc, int offset, int length) { OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); var array = new byte[] { 1, 2, 3 }; writer.Write(new Span <byte>(array, offset, length)); writer.Commit(); Assert.Equal(array.Skip(offset).Take(length).ToArray(), Read()); }
public void CanWriteEmpty() { OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); var array = new byte[] { }; writer.Write(array); writer.Write(new Span <byte>(array, 0, array.Length)); writer.Commit(); Assert.Equal(array, Read()); }
public void CanWriteMultipleTimes() { OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); writer.Write(new byte[] { 1 }); writer.Write(new byte[] { 2 }); writer.Write(new byte[] { 3 }); writer.Commit(); Assert.Equal(new byte[] { 1, 2, 3 }, Read()); }
public void SlicesSpanAndAdvancesAfterWrite() { int initialLength = Pipe.Writer.GetMemory().Length; OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); writer.Write(new byte[] { 1, 2, 3 }); writer.Commit(); Assert.Equal(initialLength - 3, writer.Span.Length); Assert.Equal(Pipe.Writer.GetMemory().Length, writer.Span.Length); Assert.Equal(new byte[] { 1, 2, 3 }, Read()); }
public void CanWriteOverTheBlockLength() { Memory <byte> memory = Pipe.Writer.GetMemory(); OutputWriter <PipeWriter> writer = OutputWriter.Create(Pipe.Writer); IEnumerable <byte> source = Enumerable.Range(0, memory.Length).Select(i => (byte)i); byte[] expectedBytes = source.Concat(source).Concat(source).ToArray(); writer.Write(expectedBytes); writer.Commit(); Assert.Equal(expectedBytes, Read()); }