public void OpenWriteStream()
        {
            Stream stream = new MemoryStream();

            using (var tf = TeaFile <int> .Create(stream))
            {
                tf.Write(Enumerable.Range(1, 10));
            }
            stream.Position = 0;
            using (var tf = TeaFile <int> .OpenWrite(stream))
            {
                tf.Write(Enumerable.Range(70, 5));
            }
            stream.Position = 0;
            using (var tf = TeaFile <int> .OpenRead(stream))
            {
                tf.Count.Should().Be(10);

                tf.Read().Should().Be(70);
                tf.Read().Should().Be(71);
                tf.Read().Should().Be(72);
                tf.Read().Should().Be(73);
                tf.Read().Should().Be(74);
                tf.Read().Should().Be(6);
                tf.Read().Should().Be(7);
                tf.Read().Should().Be(8);
                tf.Read().Should().Be(9);
                tf.Read().Should().Be(10);
            }
        }
        public void OpenWrite()
        {
            var filename = "TeaFileTTest_OpenWrite.tea";

            using (var tf = TeaFile <int> .Create(filename))
            {
                tf.Count.Should().Be(0);
                tf.Write(Enumerable.Range(1, 10));
                tf.Count.Should().Be(10);
            }
            using (var tf = TeaFile <int> .OpenRead(filename))
            {
                tf.Items.ForEach(Console.WriteLine);
            }
            using (var tf = TeaFile <int> .OpenWrite(filename))
            {
                tf.Count.Should().Be(10);
                tf.Write(Enumerable.Range(1, 5));
                tf.Count.Should().Be(10);
                tf.Write(Enumerable.Range(1, 5));
                tf.Count.Should().Be(10);
                tf.Write(Enumerable.Range(1, 5));
                tf.Count.Should().Be(15);
            }
            Console.WriteLine("..................");
            using (var tf = TeaFile <int> .OpenRead(filename))
            {
                tf.Items.ForEach(Console.WriteLine);
            }
        }
        public void ExoticCoverage()
        {
            Executing.This(() => TeaFile <int> .Create((string)null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Create((string)null, "contento", null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Create((string)null, "a", null, true)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Create((Stream)null, "a", null, true)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Create((Stream)null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Create((Stream)null, "contento", null)).Should().Throw <ArgumentNullException>();

            Executing.This(() => TeaFile <int> .OpenRead((Stream)null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .OpenRead((Stream)null, ItemDescriptionElements.None)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .OpenRead((string)null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .OpenRead((string)null, ItemDescriptionElements.None)).Should().Throw <ArgumentNullException>();

            Executing.This(() => TeaFile <int> .OpenWrite((Stream)null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .OpenWrite((Stream)null, ItemDescriptionElements.None)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .OpenWrite((string)null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .OpenWrite((string)null, ItemDescriptionElements.None)).Should().Throw <ArgumentNullException>();

            Executing.This(() => TeaFile <int> .Append(null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Append(null)).Should().Throw <ArgumentNullException>();
            Executing.This(() => TeaFile <int> .Append(null, ItemDescriptionElements.None)).Should().Throw <ArgumentNullException>();

            var stream = new MemoryStream();

            using (var tf = TeaFile <int> .Create(stream))
            {
                tf.Write(Enumerable.Range(100, 7));
            }
            stream.Position = 0;
            using (var tf = TeaFile <int> .OpenRead(stream))
            {
                tf.Items.GetEnumerator().Should().Not.Be.Null();
            }
        }
        public void DiscDriveFailureDuringOpenWrite()
        {
            var stream = new TestStream();

            using (var tf = TeaFile <int> .Create(stream))
            {
                tf.Write(111);
            }
            stream.Position          = 0;
            stream.FailAfterPosition = 17;
            Executing.This(() => TeaFile <int> .OpenWrite(stream)).Should().Throw <FileFormatException>()
            .Exception.InnerException.Should().Be.OfType <IOException>();
        }
        public void OpenWriteOnNonExistingFile()
        {
            var filename = "TeaFileTTest_OpenWriteOnNonExistingFile.tea";

            Executing.This(() => TeaFile <int> .OpenWrite(filename)).Should().Throw();
        }