public void Use_Pool()
        {
            var pool = new RememberingPool(ArrayPool <byte> .Shared);
            var sut  = new CircularBuffer(pool);

            sut.WriteStream.Write(new byte[] { 7, 5, 6, 8 }, 0, 4);

            pool.Operations.Should().BePositive();
        }
        public void Return_Arrays_To_Pool_On_Dispose()
        {
            var pool = new RememberingPool(ArrayPool <byte> .Shared);
            var sut  = new CircularBuffer(pool);

            sut.WriteStream.Write(new byte[] { 7, 5, 6, 8 }, 0, 4);

            sut.Dispose();

            pool.HasCurrentRentArrays.Should().BeFalse();
        }
        public void Return_Rent_Arrays_In_Pool()
        {
            var seed = Guid.NewGuid().GetHashCode();

            Console.WriteLine($"Seed is {seed}");
            var random = new Random(seed);
            var input  = random.NextBytes(kb * kb, 100 * kb * kb);
            var pool   = new RememberingPool(ArrayPool <byte> .Shared);

            using (var sut = new CircularBuffer(pool))
            {
                RanRandomOperations(sut, input, random);
            }

            pool.HasCurrentRentArrays.Should().BeFalse();
        }
        public void Return_All_Arrays_To_Pool_When_Read_To_End()
        {
            var pool = new RememberingPool(ArrayPool <byte> .Shared);

            using var stream = fixture.Create(
                      output => new StreamWriter(output, Encoding.UTF8),
                      Strings(15_000),
                      pool,
                      (output, animal) =>
            {
                output.WriteLine(animal);
            }
                      );
            using var reader = new StreamReader(stream, Encoding.UTF8);
            reader.ReadToEnd();

            pool.HasCurrentRentArrays.Should().BeFalse();
        }
        public void Use_Pool()
        {
            var pool = new RememberingPool(ArrayPool <byte> .Shared);

            using var stream = fixture.Create(
                      output => new StreamWriter(output, Encoding.UTF8),
                      Strings(15_000),
                      pool,
                      (output, animal) =>
            {
                output.WriteLine(animal);
            }
                      );
            using var reader = new StreamReader(stream, Encoding.UTF8);
            reader.ReadToEnd();

            pool.Operations.Should().BePositive();
        }