コード例 #1
0
		public void Dispose_ActionIsCalledOnlyOnce()
		{
			var parent = new Mock<IDisposableReference>(MockBehavior.Strict);

			var release = new Mock<IDisposable>(MockBehavior.Strict);
			release.Setup(_ => _.Dispose());

			var reference = new DisposableReference(parent.Object, release.Object);
			reference.Dispose();
			reference.Dispose();
			reference.Dispose();

			release.Verify(_ => _.Dispose(), Times.Once);
		}
コード例 #2
0
		public void AddReference_CallParent_EvenAfterDispose()
		{
			var parent = new Mock<IDisposableReference>(MockBehavior.Strict);
			parent.Setup(_ => _.AddReference()).Returns(parent.Object);

			var release = new Mock<IDisposable>(MockBehavior.Strict);
			release.Setup(_ => _.Dispose());

			var reference = new DisposableReference(parent.Object, release.Object);

			reference.Dispose();
			release.Verify(_ => _.Dispose(), Times.Once);

			var other = reference.AddReference();
			Assert.IsNotNull(other);

			parent.Verify(_ => _.AddReference(), Times.Once);
		}