public PooledMemory(IMemoryOwner <byte> owner, TestMemoryPool pool)
 {
     _owner          = owner;
     _pool           = pool;
     _leaser         = Environment.StackTrace;
     _referenceCount = 1;
 }
        public async Task ReadMultipleTimesAdvanceFreesAppropriately()
        {
            var pool = new TestMemoryPool();

            CreateReader(memoryPool: pool);

            WriteByteArray(2000);

            for (var i = 0; i < 99; i++)
            {
                var readResult = await Reader.ReadAsync();

                Reader.AdvanceTo(readResult.Buffer.Start, readResult.Buffer.End);
            }

            var result = await Reader.ReadAsync();

            Reader.AdvanceTo(result.Buffer.End);
            Assert.Equal(1, pool.GetRentCount());
        }
        public async Task ReadMultipleTimesAdvanceFreesAppropriately()
        {
            var blockSize = 16;
            var pool      = new TestMemoryPool();

            Reader = new StreamPipeReader(MemoryStream, blockSize, pool);
            Write(Encoding.ASCII.GetBytes(new string('a', 10000)));

            for (var i = 0; i < 99; i++)
            {
                var readResult = await Reader.ReadAsync();

                Reader.AdvanceTo(readResult.Buffer.Start, readResult.Buffer.End);
            }

            var result = await Reader.ReadAsync();

            Reader.AdvanceTo(result.Buffer.End);
            Assert.Equal(1, pool.GetRentCount());
        }