public void Ctor_throws_when_invalid_isolation_level() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); var ex = Assert.Throws<ArgumentException>(() => connection.BeginTransaction(0)); Assert.Equal(Strings.FormatInvalidIsolationLevel(0), ex.Message); } }
public void Ctor_unsets_read_uncommitted_when_serializable() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); using (connection.BeginTransaction(IsolationLevel.Serializable)) { Assert.Equal(0L, connection.ExecuteScalar<long>("PRAGMA read_uncommitted")); } } }
public void IsolationLevel_is_infered_when_unspecified() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); connection.ExecuteNonQuery("PRAGMA read_uncommitted = 1"); using (var transaction = connection.BeginTransaction()) { Assert.Equal(IsolationLevel.ReadUncommitted, transaction.IsolationLevel); } } }
public void IsolationLevel_throws_when_completed() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); var transaction = connection.BeginTransaction(); transaction.Dispose(); var ex = Assert.Throws<InvalidOperationException>(() => transaction.IsolationLevel); Assert.Equal(Strings.TransactionCompleted, ex.Message); } }
public void Dispose_can_be_called_more_than_once() { using (var connection = new SQLiteConnection("Filename=:memory:")) { CreateTestTable(connection); var transaction = connection.BeginTransaction(); transaction.Dispose(); transaction.Dispose(); } }
public void Commit_throws_when_connection_closed() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); using (var transaction = connection.BeginTransaction()) { connection.Close(); var ex = Assert.Throws<InvalidOperationException>(() => transaction.Commit()); Assert.Equal(Strings.TransactionCompleted, ex.Message); } } }
public void Dispose_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { CreateTestTable(connection); using (var transaction = connection.BeginTransaction()) { using (var command = connection.CreateCommand()) { command.CommandText = "INSERT INTO TestTable VALUES (1)"; command.ExecuteNonQuery(); transaction.Dispose(); Assert.Null(connection.Transaction); Assert.Null(transaction.Connection); } } Assert.Equal(0L, connection.ExecuteScalar<long>("SELECT COUNT(*) FROM TestTable")); } }
public void BeginTransaction_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); using (var transaction = connection.BeginTransaction()) { Assert.NotNull(transaction); Assert.Same(transaction, connection.Transaction); Assert.Equal(connection, transaction.Connection); Assert.Equal(IsolationLevel.Serializable, transaction.IsolationLevel); } } }
public void BeginTransaction_throws_when_parallel_transaction() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); using (connection.BeginTransaction()) { var ex = Assert.Throws<InvalidOperationException>(() => connection.BeginTransaction()); Assert.Equal(Strings.ParallelTransactionsNotSupported, ex.Message); } } }
public void BeginTransaction_throws_when_closed() { using (var connection = new SQLiteConnection()) { var ex = Assert.Throws<InvalidOperationException>(() => connection.BeginTransaction()); Assert.Equal(Strings.FormatCallRequiresOpenConnection("BeginTransaction"), ex.Message); } }
public void ExecuteReader_throws_when_transaction_required() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1"; connection.Open(); using (connection.BeginTransaction()) { var ex = Assert.Throws<InvalidOperationException>(() => command.ExecuteReader()); Assert.Equal(Strings.TransactionRequired, ex.Message); } } } }
public void ExecuteNonQuery_throws_when_transaction_mismatched() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1"; connection.Open(); using (var otherConnection = new SQLiteConnection("Filename=:memory:")) { otherConnection.Open(); using (var transction = otherConnection.BeginTransaction()) { command.Transaction = transction; var ex = Assert.Throws<InvalidOperationException>(() => command.ExecuteNonQuery()); Assert.Equal(Strings.TransactionConnectionMismatch, ex.Message); } } } } }