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 ConnectionString_setter_throws_when_open() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); var ex = Assert.Throws<InvalidOperationException>( () => connection.ConnectionString = "Filename=test.db"); Assert.Equal(Strings.ConnectionStringRequiresClosedConnection, ex.Message); } }
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 HasRows_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1"; connection.Open(); using (var reader = command.ExecuteReader()) { Assert.True(reader.HasRows); } } } }
public void FieldCount_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1"; connection.Open(); using (var reader = command.ExecuteReader()) { Assert.Equal(1, reader.FieldCount); } } } }
public void ParameterName_doesnt_unset_bound_when_unchanged() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT @Parameter"; var parameter = command.Parameters.AddWithValue("@Parameter", 1); connection.Open(); command.ExecuteNonQuery(); parameter.ParameterName = "@Parameter"; Assert.True(parameter.Bound); } } }
public void RecordsAffected_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { connection.Open(); CreateTestTable(connection); command.CommandText = "INSERT INTO TestTable (Int32Column) VALUES (2)"; using (var reader = command.ExecuteReader()) { Assert.Equal(1, reader.RecordsAffected); } } } }
public void DataSource_returns_actual_filename_when_open() { using (var connection = new SQLiteConnection("Filename=test.db")) { connection.Open(); var result = connection.DataSource; Assert.True(Path.IsPathRooted(result)); Assert.Equal("test.db", Path.GetFileName(result)); } }
public void GetChar_not_supported() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 't'"; connection.Open(); using (var reader = command.ExecuteReader()) { reader.Read(); var ex = Assert.Throws<ArgumentException>(() => reader.GetChar(0)); Assert.Equal(Strings.FormatUnknownDataType(typeof(char)), ex.Message); } } } }
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 GetFieldValue_throws_when_null() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT NULL"; connection.Open(); using (var reader = command.ExecuteReader()) { reader.Read(); Assert.Throws<InvalidCastException>(() => reader.GetFieldValue<long>(0)); Assert.Throws<InvalidCastException>(() => reader.GetFieldValue<double>(0)); Assert.Throws<InvalidCastException>(() => reader.GetFieldValue<string>(0)); Assert.Throws<InvalidCastException>(() => reader.GetFieldValue<byte[]>(0)); } } } }
public void GetOrdinal_throws_when_unknown() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1"; connection.Open(); using (var reader = command.ExecuteReader()) { var ex = Assert.Throws<IndexOutOfRangeException>(() => reader.GetOrdinal("Unknown")); Assert.Equal("Unknown", ex.Message); } } } }
public void IsDBNull_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT NULL"; connection.Open(); using (var reader = command.ExecuteReader()) { Assert.True(reader.IsDBNull(0)); } } } }
public void Open_throws_when_error() { using (var connection = new SQLiteConnection("Filename=:*?\"<>|")) { var ex = Assert.Throws<SQLiteException>(() => connection.Open()); Assert.Equal(14, ex.ErrorCode); } }
public void Close_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1 UNION SELECT 2"; connection.Open(); using (var reader = command.ExecuteReader()) { reader.Read(); reader.Read(); reader.Close(); Assert.Null(command.OpenReader); Assert.True(reader.IsClosed); } // NOTE: This would equal two if not reset Assert.Equal(1L, command.ExecuteScalar()); } } }
public void Open_can_be_called_when_disposed() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Dispose(); connection.Open(); } }
private static void CreateTestTable(SQLiteConnection connection) { connection.Open(); connection.ExecuteNonQuery(@" CREATE TABLE TestTable ( BooleanColumn BIT, ByteColumn TINYINT, DateTimeColumn DATETIME, DecimalColumn DECIMAL, FloatColumn SINGLE, GuidColumn UNIQUEIDENTIFIER, Int16Column SMALLINT, Int32Column INT )"); connection.ExecuteNonQuery(@" INSERT INTO TestTable VALUES ( 1, 1, '2014-04-01 14:45:00', '3.14', 3.14, x'1cb113dcfbe69f44a8925e2a47b05350', 1, 1 )"); }
public void GetValues_when_null_scalar_column() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); connection.ExecuteNonQuery(@"CREATE TABLE TestTable (Int32Column INT)"); connection.ExecuteNonQuery(@"INSERT INTO TestTable VALUES (NULL)"); using (var command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM TestTable"; using (var reader = command.ExecuteReader()) { reader.Read(); var values = new object[1]; var count = reader.GetValues(values); Assert.Equal(1, count); Assert.Equal(DBNull.Value, values[0]); } } } }
public void GetValues_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT NULL, 1, 3.14, 'test', x'7e57'"; connection.Open(); using (var reader = command.ExecuteReader()) { reader.Read(); var values = new object[5]; var count = reader.GetValues(values); Assert.Equal(5, count); Assert.Equal(DBNull.Value, values[0]); Assert.Equal(1L, values[1]); Assert.Equal(3.14, values[2]); Assert.Equal("test", values[3]); Assert.Equal(new byte[] { 0x7e, 0x57 }, values[4]); } } } }
public void GetValue_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1"; connection.Open(); using (var reader = command.ExecuteReader()) { reader.Read(); Assert.Equal(1L, reader.GetValue(0)); } } } }
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); } } }
private static void CreateTestTable(SQLiteConnection connection) { connection.Open(); connection.ExecuteNonQuery(@" CREATE TABLE TestTable ( TestColumn INTEGER )"); }
public void Close_can_be_called_more_than_once() { using (var connection = new SQLiteConnection("Filename=:memory:")) { connection.Open(); connection.Close(); connection.Close(); } }
public void GetOrdinal_works() { using (var connection = new SQLiteConnection("Filename=:memory:")) { using (var command = connection.CreateCommand()) { command.CommandText = "SELECT 1 AS Column1"; connection.Open(); using (var reader = command.ExecuteReader()) { Assert.Equal(0, reader.GetOrdinal("Column1")); } } } }
public void Dispose_closes_connection() { var connection = new SQLiteConnection("Filename=:memory:"); connection.Open(); var raised = false; StateChangeEventHandler handler = (sender, e) => { raised = true; Assert.Equal(connection, sender); Assert.Equal(ConnectionState.Open, e.OriginalState); Assert.Equal(ConnectionState.Closed, e.CurrentState); }; connection.StateChange += handler; try { connection.Dispose(); Assert.True(raised); Assert.Equal(ConnectionState.Closed, connection.State); } finally { connection.StateChange -= handler; } }
public void Open_throws_when_no_connection_string() { using (var connection = new SQLiteConnection()) { var ex = Assert.Throws<InvalidOperationException>(() => connection.Open()); Assert.Equal(Strings.OpenRequiresSetConnectionString, ex.Message); } }
public void Dispose_can_be_called_more_than_once() { var connection = new SQLiteConnection("Filename=:memory:"); connection.Open(); connection.Dispose(); connection.Dispose(); }