| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/files/file_util.h" | 5 #include "base/files/file_util.h" |
| 6 #include "base/files/scoped_temp_dir.h" | 6 #include "base/files/scoped_temp_dir.h" |
| 7 #include "sql/connection.h" | 7 #include "sql/connection.h" |
| 8 #include "sql/correct_sql_test_base.h" |
| 8 #include "sql/statement.h" | 9 #include "sql/statement.h" |
| 9 #include "sql/transaction.h" | 10 #include "sql/transaction.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 11 #include "third_party/sqlite/sqlite3.h" | 12 #include "third_party/sqlite/sqlite3.h" |
| 12 | 13 |
| 13 class SQLTransactionTest : public testing::Test { | 14 class SQLTransactionTest : public sql::SQLTestBase { |
| 14 public: | 15 public: |
| 15 void SetUp() override { | 16 void SetUp() override { |
| 16 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 17 SQLTestBase::SetUp(); |
| 17 ASSERT_TRUE(db_.Open( | |
| 18 temp_dir_.path().AppendASCII("SQLTransactionTest.db"))); | |
| 19 | 18 |
| 20 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); | 19 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); |
| 21 } | 20 } |
| 22 | 21 |
| 23 void TearDown() override { db_.Close(); } | |
| 24 | |
| 25 sql::Connection& db() { return db_; } | |
| 26 | |
| 27 // Returns the number of rows in table "foo". | 22 // Returns the number of rows in table "foo". |
| 28 int CountFoo() { | 23 int CountFoo() { |
| 29 sql::Statement count(db().GetUniqueStatement("SELECT count(*) FROM foo")); | 24 sql::Statement count(db().GetUniqueStatement("SELECT count(*) FROM foo")); |
| 30 count.Step(); | 25 count.Step(); |
| 31 return count.ColumnInt(0); | 26 return count.ColumnInt(0); |
| 32 } | 27 } |
| 33 | |
| 34 private: | |
| 35 base::ScopedTempDir temp_dir_; | |
| 36 sql::Connection db_; | |
| 37 }; | 28 }; |
| 38 | 29 |
| 39 TEST_F(SQLTransactionTest, Commit) { | 30 TEST_F(SQLTransactionTest, Commit) { |
| 40 { | 31 { |
| 41 sql::Transaction t(&db()); | 32 sql::Transaction t(&db()); |
| 42 EXPECT_FALSE(t.is_open()); | 33 EXPECT_FALSE(t.is_open()); |
| 43 EXPECT_TRUE(t.Begin()); | 34 EXPECT_TRUE(t.Begin()); |
| 44 EXPECT_TRUE(t.is_open()); | 35 EXPECT_TRUE(t.is_open()); |
| 45 | 36 |
| 46 EXPECT_TRUE(db().Execute("INSERT INTO foo (a, b) VALUES (1, 2)")); | 37 EXPECT_TRUE(db().Execute("INSERT INTO foo (a, b) VALUES (1, 2)")); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 EXPECT_EQ(1, db().transaction_nesting()); | 111 EXPECT_EQ(1, db().transaction_nesting()); |
| 121 { | 112 { |
| 122 sql::Transaction inner3(&db()); | 113 sql::Transaction inner3(&db()); |
| 123 EXPECT_FALSE(inner3.Begin()); | 114 EXPECT_FALSE(inner3.Begin()); |
| 124 EXPECT_EQ(1, db().transaction_nesting()); | 115 EXPECT_EQ(1, db().transaction_nesting()); |
| 125 } | 116 } |
| 126 } | 117 } |
| 127 EXPECT_EQ(0, db().transaction_nesting()); | 118 EXPECT_EQ(0, db().transaction_nesting()); |
| 128 EXPECT_EQ(0, CountFoo()); | 119 EXPECT_EQ(0, CountFoo()); |
| 129 } | 120 } |
| OLD | NEW |