public void ClearArrayOnReturnTrue()
        {
            byte[] buffer;
            using (var lease = new ArrayPoolLease <byte>(20, true))
            {
                buffer = lease.Array;
                new Random().NextBytes(lease.Array);

                var sumBefore = buffer.Sum(value => value);
                Assert.NotEqual(0, sumBefore);
            }
            var sumAfter = buffer.Sum(value => value);

            Assert.Equal(0, sumAfter);
        }
        public void MockPool()
        {
            const int length = 20;
            var       buffer = new byte[length];

            new Random().NextBytes(buffer);

            var moqPool = new Mock <ArrayPool <byte> >(MockBehavior.Strict);

            moqPool.Setup(_ => _.Rent(length)).Returns((int len) => buffer).Verifiable();
            moqPool.Setup(_ => _.Return(buffer, false)).Verifiable();
            var pool = moqPool.Object;

            using (var lease = new ArrayPoolLease <byte>(pool, length))
            {
                Assert.Equal(length, lease.Count);
                Assert.Equal(buffer, lease.Array);
            }

            moqPool.Verify();
        }