Пример #1
0
        public void Dispose_MultipleCallsDoNothing()
        {
            var conn   = new TestDbConnection();
            var target = new DataTransaction(conn.BeginTransaction());

            //Act
            target.Dispose();
            target.Dispose();
        }
Пример #2
0
        public void Dispose_IsolationLevelReset()
        {
            var conn   = new TestDbConnection();
            var target = new DataTransaction(conn.BeginTransaction());

            //Act
            target.Dispose();

            //Assert
            target.IsolationLevel.Should().Be(IsolationLevel.Unspecified);
        }
Пример #3
0
        public void Dispose_DoesNotCloseConnection()
        {
            var conn   = new TestDbConnection();
            var target = new DataTransaction(conn.BeginTransaction(), false);

            //Act
            target.Dispose();

            //Assert
            conn.State.Should().Be(ConnectionState.Open);
        }
Пример #4
0
        public void Dispose_ClosesConnection()
        {
            var conn   = new TestDbConnection();
            var target = new DataTransaction(conn.BeginTransaction(), true);

            //Act
            target.Dispose();

            //Assert
            conn.State.Should().Be(ConnectionState.Closed);
        }
Пример #5
0
        public void Dispose_RaisesRolledbackEvent()
        {
            var  conn = new TestDbConnection();
            var  target = new DataTransaction(conn.BeginTransaction());
            bool wasCommitted = false, wasRolledBack = false;

            //Act
            target.Committed  += (o, e) => wasCommitted = true;
            target.RolledBack += (o, e) => wasRolledBack = true;
            target.Dispose();

            //Assert
            wasRolledBack.Should().BeTrue();
            wasCommitted.Should().BeFalse();
        }
Пример #6
0
 private void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             lock (_locker.Locker)
             {
                 _locker.Decrement();
                 if (_locker.Version == 0)
                 {
                     _trans.Dispose();
                     _conn.Dispose();
                     _conn = null;
                 }
             }
         }
         disposed = true;
     }
 }