1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef SQL_TEST_ERROR_CALLBACK_SUPPORT_H_ 6#define SQL_TEST_ERROR_CALLBACK_SUPPORT_H_ 7 8#include "sql/connection.h" 9 10namespace sql { 11 12// Helper to capture any errors into a local variable for testing. 13// For instance: 14// int error = SQLITE_OK; 15// ScopedErrorCallback sec(db, base::Bind(&CaptureErrorCallback, &error)); 16// // Provoke SQLITE_CONSTRAINT on db. 17// EXPECT_EQ(SQLITE_CONSTRAINT, error); 18void CaptureErrorCallback(int* error_pointer, int error, sql::Statement* stmt); 19 20// Helper to set db's error callback and then reset it when it goes 21// out of scope. 22class ScopedErrorCallback { 23 public: 24 ScopedErrorCallback(sql::Connection* db, 25 const sql::Connection::ErrorCallback& cb); 26 ~ScopedErrorCallback(); 27 28 private: 29 sql::Connection* db_; 30 31 DISALLOW_COPY_AND_ASSIGN(ScopedErrorCallback); 32}; 33 34} // namespace sql 35 36#endif // SQL_TEST_ERROR_CALLBACK_SUPPORT_H_ 37