示例#1
0
        public void clearing_a_container_disposes_all_its_registered_IDisposable_objects_and_remove_reentrancy_is_handled()
        {
            SimpleServiceContainer container = new SimpleServiceContainer();
            DisposableThatReenterClearWhenDisposed disposableClass = new DisposableThatReenterClearWhenDisposed();

            disposableClass.ServiceContainer = container;
            container.Add(disposableClass, Util.ActionDispose);

            DisposableThatReenterClearWhenDisposed service = container.GetService <DisposableThatReenterClearWhenDisposed>();

            Assert.That(service != null);
            Assert.That(service.GetType(), Is.EqualTo(typeof(DisposableThatReenterClearWhenDisposed)));

            container.Clear();

            Assert.That(container.GetService(typeof(DisposableThatReenterClearWhenDisposed)), Is.Null);
            Assert.That(container.GetService <DisposableThatReenterClearWhenDisposed>(), Is.Null);
            Assert.Throws <CKException>(() => container.GetService <DisposableThatReenterClearWhenDisposed>(true));
        }
        public void clearing_a_container_disposes_all_its_registered_IDisposable_objects_and_remove_reentrancy_is_handled()
        {
            SimpleServiceContainer container = new SimpleServiceContainer();
            DisposableThatReenterClearWhenDisposed disposableClass = new DisposableThatReenterClearWhenDisposed();

            disposableClass.ServiceContainer = container;
            container.Add(disposableClass, Util.ActionDispose);

            DisposableThatReenterClearWhenDisposed service = container.GetService <DisposableThatReenterClearWhenDisposed>();

            service.Should().NotBeNull();
            service.GetType().Should().Be(typeof(DisposableThatReenterClearWhenDisposed));

            container.Clear();

            container.GetService(typeof(DisposableThatReenterClearWhenDisposed)).Should().BeNull();
            container.GetService <DisposableThatReenterClearWhenDisposed>().Should().BeNull();
            container.Invoking(sut => sut.GetService <DisposableThatReenterClearWhenDisposed>(true)).Should().Throw <Exception>();
        }
示例#3
0
        public void using_onRemove_action_reentrancy_of_remove_is_handled()
        {
            SimpleServiceContainer container = new SimpleServiceContainer();
            DisposableThatReenterClearWhenDisposed disposableClass = new DisposableThatReenterClearWhenDisposed();
            EmptyClass stupidObject = new EmptyClass();

            disposableClass.ServiceContainer = container;
            container.Add(disposableClass, Util.ActionDispose);
            container.Add(stupidObject, e => container.Clear());

            DisposableThatReenterClearWhenDisposed service = container.GetService <DisposableThatReenterClearWhenDisposed>();

            Assert.That(service, Is.InstanceOf <DisposableThatReenterClearWhenDisposed>());

            container.Remove <EmptyClass>();

            Assert.That(container.GetService(typeof(DisposableThatReenterClearWhenDisposed)), Is.Null);
            Assert.That(container.GetService <DisposableThatReenterClearWhenDisposed>(), Is.Null);
            Assert.Throws <CKException>(() => container.GetService <DisposableThatReenterClearWhenDisposed>(true));
        }
        public void using_onRemove_action_reentrancy_of_remove_is_handled()
        {
            SimpleServiceContainer container = new SimpleServiceContainer();
            DisposableThatReenterClearWhenDisposed disposableClass = new DisposableThatReenterClearWhenDisposed();
            EmptyClass stupidObject = new EmptyClass();

            disposableClass.ServiceContainer = container;
            container.Add(disposableClass, Util.ActionDispose);
            container.Add(stupidObject, e => container.Clear());

            DisposableThatReenterClearWhenDisposed service = container.GetService <DisposableThatReenterClearWhenDisposed>();

            service.Should().BeOfType <DisposableThatReenterClearWhenDisposed>();

            container.Remove <EmptyClass>();

            container.GetService(typeof(DisposableThatReenterClearWhenDisposed)).Should().BeNull();
            container.GetService <DisposableThatReenterClearWhenDisposed>().Should().BeNull();
            container.Invoking(sut => sut.GetService <DisposableThatReenterClearWhenDisposed>(true)).Should().Throw <Exception>();
        }