public void ToArray()
        {
            var array = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var input = array.AsArraySegment(2, 5);

            var output = ArraySegmentExtensions.ToArray(input);

            output
            .Should().BeEquivalentTo(input);
        }
        public void CopyToArray()
        {
            var array  = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var input  = array.AsArraySegment(2, 5);
            var output = new byte[10];

            ArraySegmentExtensions.CopyTo(input, output);

            output.Take(5)
            .Should().BeEquivalentTo(input);
        }
        public void CreateBinaryReader()
        {
            var array = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            using (var reader = ArraySegmentExtensions.CreateBinaryReader(array))
            {
                foreach (var b in array)
                {
                    reader.ReadByte()
                    .Should().Be(b);
                }
            }
        }
        public void CreateBinaryWriter()
        {
            var array = new byte[10];

            using (var writer = ArraySegmentExtensions.CreateBinaryWriter(array))
            {
                for (byte b = 0; b < array.Length; b++)
                {
                    writer.Write(b);
                }

                array
                .Should().BeEquivalentTo(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
            }
        }
        public void CreateStream()
        {
            var array = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            using (var stream = ArraySegmentExtensions.CreateStream(array))
            {
                var buffer = new byte[array.Length];

                stream.Length
                .Should().Be(array.Length);

                stream.Read(buffer, 0, buffer.Length);

                buffer
                .Should().BeEquivalentTo(array);
            }
        }