Taijutsu.Data.Internal.DeferredTerminationPolicy.Terminate C# (CSharp) Method

Terminate() public method

public Terminate ( IDataSession session, bool isSuccessfully ) : void
session IDataSession
isSuccessfully bool
return void
        public void Terminate(IDataSession session, bool isSuccessfully)
        {
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }

            if (!disposed)
            {
                sessions.Add(session);
            }
            else
            {
                session.Dispose();
            }
        }

Usage Example

        public virtual void ShouldAggregateExceptionsOnDispose()
        {
            var session1 = Substitute.For<IDataSession>();
            var session2 = Substitute.For<IDataSession>();
            var session3 = Substitute.For<IDataSession>();

            session1.When(s => s.Dispose()).Do(s => { throw new Exception("session1"); });
            session3.When(s => s.Dispose()).Do(s => { throw new Exception("session3"); });

            var policy = new DeferredTerminationPolicy();

            policy.Terminate(session1, true);
            policy.Terminate(session2, true);
            policy.Terminate(session3, true);

            try
            {
                ((IDisposable)policy).Dispose();
            }
            catch (AggregateException aggregateException)
            {
                aggregateException.Message.Should().Be("session1");
                aggregateException.InnerExceptions.Any(e => e.Message == "session1").Should().Be.True();
                aggregateException.InnerExceptions.Any(e => e.Message == "session2").Should().Be.False();
                aggregateException.InnerExceptions.Any(e => e.Message == "session3").Should().Be.True();
                aggregateException.InnerExceptions.Count().Should().Be(2);
            }

            session1.Received(1).Dispose();
            session2.Received(1).Dispose();
            session3.Received(1).Dispose();
        }
All Usage Examples Of Taijutsu.Data.Internal.DeferredTerminationPolicy::Terminate
DeferredTerminationPolicy