コード例 #1
0
        public void Transaction()
        {
            var conn = new System.Data.SQLite.SQLiteConnection("Data Source=:memory:");
            using (var wconn = new LoggingConnection(conn))
            {
                wconn.Open();

                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.StartsWith("コネクションを接続しました。 実行時間:", logger.Last.Message);

                using (var trans = wconn.BeginTransaction())
                {
                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Equal("トランザクションを開始しました。", logger.Last.Message);

                    trans.Commit();

                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Matches(@"トランザクションをコミットしました。 実行時間:\d\d:\d\d:\d\d\.\d+", logger.Last.Message);
                }
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Equal("トランザクションが破棄(Dispose)されました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);

                using (var trans = wconn.BeginTransaction())
                {
                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Equal("トランザクションを開始しました。", logger.Last.Message);

                    trans.Rollback();

                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Matches(@"トランザクションをロールバックしました。 実行時間:\d\d:\d\d:\d\d\.\d+", logger.Last.Message);
                }
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Equal("トランザクションが破棄(Dispose)されました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);

                using (var trans = wconn.BeginTransaction())
                {
                    Assert.Equal(LogLevel.Trace, logger.Last.Level);
                    Assert.Equal("トランザクションを開始しました。", logger.Last.Message);

                }
                Assert.Equal(LogLevel.Error, logger.Last.Level);
                Assert.Equal("コミットもロールバックも実行されずに、トランザクションが破棄(Dispose)されました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);
            }
            Assert.Equal(LogLevel.Trace, logger.Last.Level);
            Assert.Equal("コネクションが破棄(Dispose)されました。", logger.Last.Message);

            Assert.Equal(10, logger.Items.Count);
        }
コード例 #2
0
        public void Connection()
        {
            using (var conn = new LoggingConnection(new System.Data.SQLite.SQLiteConnection("Data Source=:memory:")))
            {
                conn.Open();
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Matches(@"コネクションを接続しました。 実行時間:\d+:\d+:\d+\.\d+", logger.Last.Message);
                Assert.Null(logger.Last.Exception);

                var openException = Assert.Throws<InvalidOperationException>(() => conn.Open());
                Assert.Equal(LogLevel.Error, logger.Last.Level);
                Assert.Equal(string.Format(@"接続に失敗
            --- SQLiteConnection ---
            ConnectionString  = {0}
            ConnectionTimeout = {1}
            Database = main
            State = Open
            ", conn.ConnectionString, conn.ConnectionTimeout), logger.Last.Message);
                Assert.Equal(openException, logger.Last.Exception);

                conn.Close();
                Assert.Equal(LogLevel.Trace, logger.Last.Level);
                Assert.Equal("コネクションを閉じました。", logger.Last.Message);
                Assert.Null(logger.Last.Exception);
            }
            Assert.Equal(LogLevel.Trace, logger.Last.Level);
            Assert.Equal("コネクションが破棄(Dispose)されました。", logger.Last.Message);
            Assert.Null(logger.Last.Exception);
        }