SubStream.WriteByte C# (CSharp) Method

WriteByte() public method

public WriteByte ( byte value ) : void
value byte
return void
    public override void WriteByte(byte value)
    {
        stream.Position = Position + streamOffset;
        stream.WriteByte(value);
        Position++;
    }

Usage Example

Ejemplo n.º 1
0
        public void WriteByte()
        {
            // Verify that we can write bytes to a substream that spans the entire parent.

            using (var parent = new MemoryStream())
            {
                parent.Write(new byte[10]);

                using (var substream = new SubStream(parent, 0, 10))
                {
                    for (int i = 0; i < 10; i++)
                    {
                        substream.WriteByte((byte)i);
                    }
                }

                parent.Position = 0;

                var buffer = parent.ReadBytes(10);

                Assert.Equal(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, buffer);
            }

            // Verify that we can write bytes to a substream that is fully contained within the parent.

            using (var parent = new MemoryStream())
            {
                parent.Write(new byte[10]);

                using (var substream = new SubStream(parent, 2, 5))
                {
                    for (int i = 0; i < 5; i++)
                    {
                        substream.WriteByte((byte)i);
                    }
                }

                parent.Position = 0;

                var buffer = parent.ReadBytes(10);

                Assert.Equal(new byte[] { 0, 0, 0, 1, 2, 3, 4, 0, 0, 0 }, buffer);
            }

            // Verify that we can't write bytes past the end of the substream when
            // the substream spans the entire parent.

            using (var parent = new MemoryStream())
            {
                parent.Write(new byte[10]);

                using (var substream = new SubStream(parent, 0, 10))
                {
                    for (int i = 0; i < 10; i++)
                    {
                        substream.WriteByte((byte)i);
                    }

                    Assert.Throws <IOException>(() => substream.WriteByte((byte)11));
                }
            }

            // Verify that we can't write bytes past the end of the substream when
            // the substream that is fully contained within the parent.

            using (var parent = new MemoryStream())
            {
                parent.Write(new byte[10]);

                using (var substream = new SubStream(parent, 2, 5))
                {
                    for (int i = 0; i < 5; i++)
                    {
                        substream.WriteByte((byte)i);
                    }

                    Assert.Throws <IOException>(() => substream.WriteByte((byte)6));
                }
            }
        }