// Copyright 2013 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. #ifndef SQL_TEST_ERROR_CALLBACK_SUPPORT_H_ #define SQL_TEST_ERROR_CALLBACK_SUPPORT_H_ #include "sql/connection.h" namespace sql { // Helper to capture any errors into a local variable for testing. // For instance: // int error = SQLITE_OK; // ScopedErrorCallback sec(db, base::Bind(&CaptureErrorCallback, &error)); // // Provoke SQLITE_CONSTRAINT on db. // EXPECT_EQ(SQLITE_CONSTRAINT, error); void CaptureErrorCallback(int* error_pointer, int error, sql::Statement* stmt); // Helper to set db's error callback and then reset it when it goes // out of scope. class ScopedErrorCallback { public: ScopedErrorCallback(sql::Connection* db, const sql::Connection::ErrorCallback& cb); ~ScopedErrorCallback(); private: sql::Connection* db_; DISALLOW_COPY_AND_ASSIGN(ScopedErrorCallback); }; } // namespace sql #endif // SQL_TEST_ERROR_CALLBACK_SUPPORT_H_