示例#1
0
        public void should_dispose_disposable_component_on_release()
        {
            var componentPool  = new ComponentPool <TestDisposableComponent>(10);
            var indexToUse     = componentPool.IndexPool.AllocateInstance();
            var componentToUse = new TestDisposableComponent();

            componentPool.Components[indexToUse] = componentToUse;

            componentPool.Release(indexToUse);

            Assert.True(componentToUse.isDisposed);
        }
示例#2
0
        public void ScopedBaseDisposableComponent_EndOfUsingScope_DisposeWasCalled()
        {
            //Arrange
            using var disposeWasCalled = new ManualResetEventSlim();

            //Act
            using (var component = new TestDisposableComponent(disposeWasCalled))
            {
            }

            //Assert
            Assert.IsTrue(disposeWasCalled.Wait(1000));
        }
示例#3
0
        public void ScopedBaseDisposableComponent_DisposeInParallel_DisposeWasCalledOnce()
        {
            //Arrange
            using var counter = new CountdownEvent(3);
            var component = new TestDisposableComponent(counter);

            //Act
            Parallel.For(0, 2, i =>
            {
                component.Dispose();
            });

            //Assert
            Assert.IsFalse(counter.IsSet);
            Assert.AreEqual(counter.CurrentCount, counter.InitialCount - 1);
        }