diff options
Diffstat (limited to 'sql/statement_unittest.cc')
-rw-r--r-- | sql/statement_unittest.cc | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/sql/statement_unittest.cc b/sql/statement_unittest.cc index b6b6aa8..0028b9d 100644 --- a/sql/statement_unittest.cc +++ b/sql/statement_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -88,14 +88,14 @@ TEST_F(SQLStatementTest, Run) { // Run should fail since this produces output, and we should use Step(). This // gets a bit wonky since sqlite says this is OK so succeeded is set. - s.Reset(); + s.Reset(true); s.BindInt(0, 3); EXPECT_FALSE(s.Run()); EXPECT_EQ(SQLITE_ROW, db().GetErrorCode()); EXPECT_TRUE(s.Succeeded()); // Resetting it should put it back to the previous state (not runnable). - s.Reset(); + s.Reset(true); EXPECT_FALSE(s.Succeeded()); // Binding and stepping should produce one row. @@ -120,3 +120,25 @@ TEST_F(SQLStatementTest, BasicErrorCallback) { EXPECT_EQ(SQLITE_MISMATCH, sqlite_error()); reset_error(); } + +TEST_F(SQLStatementTest, Reset) { + ASSERT_TRUE(db().Execute("CREATE TABLE foo (a, b)")); + ASSERT_TRUE(db().Execute("INSERT INTO foo (a, b) VALUES (3, 12)")); + ASSERT_TRUE(db().Execute("INSERT INTO foo (a, b) VALUES (4, 13)")); + + sql::Statement s(db().GetUniqueStatement( + "SELECT b FROM foo WHERE a = ? ")); + s.BindInt(0, 3); + ASSERT_TRUE(s.Step()); + EXPECT_EQ(12, s.ColumnInt(0)); + ASSERT_FALSE(s.Step()); + + s.Reset(false); + // Verify that we can get all rows again. + ASSERT_TRUE(s.Step()); + EXPECT_EQ(12, s.ColumnInt(0)); + EXPECT_FALSE(s.Step()); + + s.Reset(true); + ASSERT_FALSE(s.Step()); +} |