123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // 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.
- #include "sql/test/scoped_error_expecter.h"
- #include "base/bind.h"
- #include "base/types/pass_key.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace sql {
- namespace test {
- ScopedErrorExpecter::ScopedErrorExpecter()
- : checked_(false) {
- callback_ = base::BindRepeating(&ScopedErrorExpecter::ErrorSeen,
- base::Unretained(this));
- Database::SetScopedErrorExpecter(&callback_,
- base::PassKey<ScopedErrorExpecter>());
- }
- ScopedErrorExpecter::~ScopedErrorExpecter() {
- EXPECT_TRUE(checked_) << " Test must call SawExpectedErrors()";
- Database::ResetScopedErrorExpecter(base::PassKey<ScopedErrorExpecter>());
- }
- void ScopedErrorExpecter::ExpectError(int err) {
- EXPECT_EQ(0u, errors_expected_.count(err))
- << " Error " << err << " is already expected";
- errors_expected_.insert(err);
- }
- bool ScopedErrorExpecter::SawExpectedErrors() {
- checked_ = true;
- return errors_expected_ == errors_seen_;
- }
- bool ScopedErrorExpecter::ErrorSeen(int err) {
- // Look for extended code.
- if (errors_expected_.count(err) > 0) {
- // Record that the error was seen.
- errors_seen_.insert(err);
- return true;
- }
- // Trim extended codes and check again.
- int base_err = err & 0xff;
- if (errors_expected_.count(base_err) > 0) {
- // Record that the error was seen.
- errors_seen_.insert(base_err);
- return true;
- }
- // Unexpected error.
- ADD_FAILURE() << " Unexpected SQLite error " << err;
- return false;
- }
- } // namespace test
- } // namespace sql
|