コード例 #1
0
        public virtual void Return()
        {
            // Arrange
            var succeed = RandomHelper.NextBoolean(g_random);

            MockInnerPool.Setup(inner => inner.Return("data")).Returns(succeed);

            // Act
            var result = DecoratedPool.Return("data");

            // Assert
            Assert.Equal(succeed, result);
        }
コード例 #2
0
        public void Count()
        {
            // Arrange
            var expected = g_random.Next();

            MockInnerPool.Setup(inner => inner.Count).Returns(expected);

            // Act
            var result = DecoratedPool.Count;

            // Assert
            Assert.Equal(expected, result);
        }
コード例 #3
0
        public void Return_Inner_Return_False()
        {
            // Arrange
            var item = RandomHelper.NextWord(g_random);

            MockInnerPool.Setup(inner => inner.Return(item)).Returns(false);

            // Act
            var result = DecoratedPool.Return(item);

            // Assert
            Assert.False(result);
        }
コード例 #4
0
        public virtual void Return_Already_Disposed()
        {
            // Arrange
            MockInnerPool.Setup(inner => inner.Dispose());
            MockManagedPool.Setup(managed => managed.Clear()).Returns(true);
            DecoratedPool.Dispose();

            // Act
            var result = DecoratedPool.Return(null);

            // Assert
            Assert.False(result);
        }
コード例 #5
0
        public override void Return_Already_Disposed()
        {
            // Arrange
            MockInnerPool.Setup(inner => inner.Take(null)).Returns((string)null);
            MockInnerPool.Setup(inner => inner.Count).Returns(0);
            MockInnerPool.Setup(inner => inner.Dispose());
            DecoratedPool.Dispose();

            // Act
            var result = DecoratedPool.Return(null);

            // Assert
            Assert.False(result);
        }
コード例 #6
0
        public void TakeCurrent_Not_IdledOut()
        {
            // Arrange
            var current = DateTime.UtcNow;

            Assert.False(IdleTimeoutPool.TryIdleOut("x", current.AddSeconds(-1)));
            MockInnerPool.Setup(inner => inner.Take(null)).Returns("x");

            // Act
            var result = IdleTimeoutPool.TakeCurrent(null, current);

            // Assert
            Assert.Equal("x", result);
            Assert.Equal(0, m_releaseFactoryCalls);
        }
コード例 #7
0
ファイル: EagerPoolTest.cs プロジェクト: kouweizhong/relib
        public override void Return_Already_Disposed()
        {
            // Arrange
            var items = new Queue <string>(new string[] { "x", "x", null });

            MockInnerPool.Setup(inner => inner.Take(null)).Returns(items.Dequeue);
            MockInnerPool.Setup(inner => inner.Count).Returns(0);
            MockInnerPool.Setup(inner => inner.Dispose());
            DecoratedPool.Dispose();

            // Act
            var result = DecoratedPool.Return(null);

            // Assert
            Assert.False(result);
        }
コード例 #8
0
        public void TakeCurrent_IdledOut()
        {
            // Arrange
            var current = DateTime.UtcNow;

            Assert.False(IdleTimeoutPool.TryIdleOut("x", current.AddSeconds(-10)));
            Assert.False(IdleTimeoutPool.TryIdleOut("y", current.AddSeconds(-10)));
            var items = new Queue <string>(new string[] { "x", "y", null });

            MockInnerPool.Setup(inner => inner.Take(null)).Returns(() => items.Dequeue());

            // Act
            var result = IdleTimeoutPool.TakeCurrent(null, current);

            // Assert
            Assert.Null(result);
            Assert.Equal(2, m_releaseFactoryCalls);
        }
コード例 #9
0
        public void Clear_Inner_Take_Until_Returns_Null()
        {
            // Arrange
            var items = new Queue <string>(new string[] { "x", "y", null });

            MockInnerPool.Setup(inner => inner.Take(null)).Returns(() => items.Dequeue());
            MockInnerPool.Setup(inner => inner.Count).Returns(0);
            var decoratedPool = new Mock <ManagedPool <string> >(MockInnerPool.Object, new Action <string>(ReleaseFactory));

            decoratedPool.CallBase = true;

            // Act
            var result = decoratedPool.Object.Clear();

            // Assert
            Assert.True(result);
            Assert.Equal(0, items.Count);
        }
コード例 #10
0
        public void Take_Inner_Take_Returns_Null()
        {
            // Arrange
            int attempt = 0;

            MockInnerPool.Setup(inner => inner.Return("x")).Returns(true);
            MockInnerPool.Setup(inner => inner.Take(null)).Returns(() => attempt++ == 0 ? (string)null : "x");
            while (m_waitPool.Return("x"))
            {
            }

            // Act
            var result = m_waitPool.Take(null);

            // Assert
            Assert.Null(result);
            for (int i = 0; i < m_waitPool.Size; i++)
            {
                Assert.Equal("x", m_waitPool.Take(null));
            }

            Assert.Null(m_waitPool.Take(null));
        }