Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Side by Side Diff: sql/connection_unittest.cc

Issue 8899012: Put debugging assertions into sql::Statement. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/file_util.h" 5 #include "base/file_util.h"
6 #include "base/scoped_temp_dir.h" 6 #include "base/scoped_temp_dir.h"
7 #include "sql/connection.h" 7 #include "sql/connection.h"
8 #include "sql/statement.h" 8 #include "sql/statement.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "third_party/sqlite/sqlite3.h" 10 #include "third_party/sqlite/sqlite3.h"
(...skipping 17 matching lines...) Expand all
28 ScopedTempDir temp_dir_; 28 ScopedTempDir temp_dir_;
29 sql::Connection db_; 29 sql::Connection db_;
30 }; 30 };
31 31
32 TEST_F(SQLConnectionTest, Execute) { 32 TEST_F(SQLConnectionTest, Execute) {
33 // Valid statement should return true. 33 // Valid statement should return true.
34 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); 34 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)"));
35 EXPECT_EQ(SQLITE_OK, db().GetErrorCode()); 35 EXPECT_EQ(SQLITE_OK, db().GetErrorCode());
36 36
37 // Invalid statement should fail. 37 // Invalid statement should fail.
38 ASSERT_FALSE(db().Execute("CREATE TAB foo (a, b")); 38 ASSERT_EQ(SQLITE_ERROR,
39 db().ExecuteAndReturnErrorCode("CREATE TAB foo (a, b"));
39 EXPECT_EQ(SQLITE_ERROR, db().GetErrorCode()); 40 EXPECT_EQ(SQLITE_ERROR, db().GetErrorCode());
40 } 41 }
41 42
43 TEST_F(SQLConnectionTest, ExecuteWithErrorCode) {
44 ASSERT_EQ(SQLITE_OK,
45 db().ExecuteAndReturnErrorCode("CREATE TABLE foo (a, b)"));
46 ASSERT_EQ(SQLITE_ERROR,
47 db().ExecuteAndReturnErrorCode("CREATE TABLE TABLE"));
48 ASSERT_EQ(SQLITE_ERROR,
49 db().ExecuteAndReturnErrorCode(
50 "INSERT INTO foo(a, b) VALUES (1, 2, 3, 4)"));
51 }
52
42 TEST_F(SQLConnectionTest, CachedStatement) { 53 TEST_F(SQLConnectionTest, CachedStatement) {
43 sql::StatementID id1("foo", 12); 54 sql::StatementID id1("foo", 12);
44 55
45 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); 56 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)"));
46 ASSERT_TRUE(db().Execute("INSERT INTO foo(a, b) VALUES (12, 13)")); 57 ASSERT_TRUE(db().Execute("INSERT INTO foo(a, b) VALUES (12, 13)"));
47 58
48 // Create a new cached statement. 59 // Create a new cached statement.
49 { 60 {
50 sql::Statement s(db().GetCachedStatement(id1, "SELECT a FROM foo")); 61 sql::Statement s(db().GetCachedStatement(id1, "SELECT a FROM foo"));
51 ASSERT_FALSE(!s); // Test ! operator for validity. 62 ASSERT_TRUE(s.is_valid());
52 63
53 ASSERT_TRUE(s.Step()); 64 ASSERT_TRUE(s.Step());
54 EXPECT_EQ(12, s.ColumnInt(0)); 65 EXPECT_EQ(12, s.ColumnInt(0));
55 } 66 }
56 67
57 // The statement should be cached still. 68 // The statement should be cached still.
58 EXPECT_TRUE(db().HasCachedStatement(id1)); 69 EXPECT_TRUE(db().HasCachedStatement(id1));
59 70
60 { 71 {
61 // Get the same statement using different SQL. This should ignore our 72 // Get the same statement using different SQL. This should ignore our
62 // SQL and use the cached one (so it will be valid). 73 // SQL and use the cached one (so it will be valid).
63 sql::Statement s(db().GetCachedStatement(id1, "something invalid(")); 74 sql::Statement s(db().GetCachedStatement(id1, "something invalid("));
64 ASSERT_FALSE(!s); // Test ! operator for validity. 75 ASSERT_TRUE(s.is_valid());
65 76
66 ASSERT_TRUE(s.Step()); 77 ASSERT_TRUE(s.Step());
67 EXPECT_EQ(12, s.ColumnInt(0)); 78 EXPECT_EQ(12, s.ColumnInt(0));
68 } 79 }
69 80
70 // Make sure other statements aren't marked as cached. 81 // Make sure other statements aren't marked as cached.
71 EXPECT_FALSE(db().HasCachedStatement(SQL_FROM_HERE)); 82 EXPECT_FALSE(db().HasCachedStatement(SQL_FROM_HERE));
72 } 83 }
73 84
85 TEST_F(SQLConnectionTest, IsSQLValidTest) {
86 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)"));
87 ASSERT_TRUE(db().IsSQLValid("SELECT a FROM foo"));
88 ASSERT_FALSE(db().IsSQLValid("SELECT no_exist FROM foo"));
89 }
90
74 TEST_F(SQLConnectionTest, DoesStuffExist) { 91 TEST_F(SQLConnectionTest, DoesStuffExist) {
75 // Test DoesTableExist. 92 // Test DoesTableExist.
76 EXPECT_FALSE(db().DoesTableExist("foo")); 93 EXPECT_FALSE(db().DoesTableExist("foo"));
77 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); 94 ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)"));
78 EXPECT_TRUE(db().DoesTableExist("foo")); 95 EXPECT_TRUE(db().DoesTableExist("foo"));
79 96
80 // Should be case sensitive. 97 // Should be case sensitive.
81 EXPECT_FALSE(db().DoesTableExist("FOO")); 98 EXPECT_FALSE(db().DoesTableExist("FOO"));
82 99
83 // Test DoesColumnExist. 100 // Test DoesColumnExist.
(...skipping 12 matching lines...) Expand all
96 // Last insert row ID should be valid. 113 // Last insert row ID should be valid.
97 int64 row = db().GetLastInsertRowId(); 114 int64 row = db().GetLastInsertRowId();
98 EXPECT_LT(0, row); 115 EXPECT_LT(0, row);
99 116
100 // It should be the primary key of the row we just inserted. 117 // It should be the primary key of the row we just inserted.
101 sql::Statement s(db().GetUniqueStatement("SELECT value FROM foo WHERE id=?")); 118 sql::Statement s(db().GetUniqueStatement("SELECT value FROM foo WHERE id=?"));
102 s.BindInt64(0, row); 119 s.BindInt64(0, row);
103 ASSERT_TRUE(s.Step()); 120 ASSERT_TRUE(s.Step());
104 EXPECT_EQ(12, s.ColumnInt(0)); 121 EXPECT_EQ(12, s.ColumnInt(0));
105 } 122 }
106
OLDNEW
« sql/connection.cc ('K') | « sql/connection.cc ('k') | sql/meta_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698