0
Files
src/sql/sqlite_result_code_unittest.cc
Avi Drissman 69b874fee0 Update copyright headers in sql/, storage/
The methodology used to generate this CL is documented in
https://crbug.com/1098010#c95.

No-Try: true
Bug: 1098010
Change-Id: I68bb81a4dcae37f944f4d8cd39d82ed540364615
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3899461
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Auto-Submit: Avi Drissman <avi@chromium.org>
Owners-Override: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1047607}
2022-09-15 19:11:14 +00:00

265 lines
9.8 KiB
C++

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sql/sqlite_result_code.h"
#include "base/test/gtest_util.h"
#include "base/test/metrics/histogram_tester.h"
#include "sql/sqlite_result_code_values.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/sqlite/sqlite3.h"
namespace sql {
namespace {
TEST(SqliteResultCodeTest, ToSqliteResultCode_Success) {
EXPECT_EQ(SqliteResultCode::kOk, ToSqliteResultCode(SQLITE_OK));
EXPECT_EQ(SqliteResultCode::kDone, ToSqliteResultCode(SQLITE_DONE));
EXPECT_EQ(SqliteResultCode::kRow, ToSqliteResultCode(SQLITE_ROW));
}
TEST(SqliteResultCodeTest, ToSqliteResultCode_PrimaryErrorCodes) {
EXPECT_EQ(SqliteResultCode::kIo, ToSqliteResultCode(SQLITE_IOERR));
EXPECT_EQ(SqliteResultCode::kCorrupt, ToSqliteResultCode(SQLITE_CORRUPT));
EXPECT_EQ(SqliteResultCode::kConstraint,
ToSqliteResultCode(SQLITE_CONSTRAINT));
}
TEST(SqliteResultCodeTest, ToSqliteResultCode_ExtendedErrorCodes) {
EXPECT_EQ(SqliteResultCode::kIoRead, ToSqliteResultCode(SQLITE_IOERR_READ));
EXPECT_EQ(SqliteResultCode::kIoWrite, ToSqliteResultCode(SQLITE_IOERR_WRITE));
EXPECT_EQ(SqliteResultCode::kCorruptIndex,
ToSqliteResultCode(SQLITE_CORRUPT_INDEX));
EXPECT_EQ(SqliteResultCode::kConstraintUnique,
ToSqliteResultCode(SQLITE_CONSTRAINT_UNIQUE));
}
TEST(SqliteResultCodeTest, ToSqliteResultCode_MissingLowValue) {
EXPECT_DCHECK_DEATH_WITH(ToSqliteResultCode(-65536),
"Unsupported SQLite result code: -65536");
}
TEST(SqliteResultCodeTest, ToSqliteResultCode_MissingHighValue) {
EXPECT_DCHECK_DEATH_WITH(ToSqliteResultCode(65536),
"Unsupported SQLite result code: 65536");
}
TEST(SqliteResultCodeTest, ToSqliteResultCode_SqliteInternalError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(ToSqliteResultCode(SQLITE_INTERNAL),
"SQLite reported code marked for internal use: 2");
#else
EXPECT_EQ(SqliteResultCode::kInternal, ToSqliteResultCode(SQLITE_INTERNAL));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteResultCode_ChromeBugError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(
ToSqliteResultCode(SQLITE_NOTFOUND),
"SQLite reported code that should never show up in Chrome: 12");
#else
EXPECT_EQ(SqliteResultCode::kNotFound, ToSqliteResultCode(SQLITE_NOTFOUND));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_Success_Ok) {
EXPECT_DCHECK_DEATH_WITH(
ToSqliteErrorCode(SqliteResultCode::kOk),
"ToSqliteErrorCode called with non-error result code: 0");
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_Success_Done) {
EXPECT_DCHECK_DEATH_WITH(
ToSqliteErrorCode(SqliteResultCode::kDone),
"ToSqliteErrorCode called with non-error result code: 101");
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_Success_Row) {
EXPECT_DCHECK_DEATH_WITH(
ToSqliteErrorCode(SqliteResultCode::kRow),
"ToSqliteErrorCode called with non-error result code: 100");
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_PrimaryErrorCodes) {
EXPECT_EQ(SqliteErrorCode::kIo, ToSqliteErrorCode(SqliteResultCode::kIo));
EXPECT_EQ(SqliteErrorCode::kCorrupt,
ToSqliteErrorCode(SqliteResultCode::kCorrupt));
EXPECT_EQ(SqliteErrorCode::kConstraint,
ToSqliteErrorCode(SqliteResultCode::kConstraint));
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_ExtendedErrorCodes) {
EXPECT_EQ(SqliteErrorCode::kIoRead,
ToSqliteErrorCode(SqliteResultCode::kIoRead));
EXPECT_EQ(SqliteErrorCode::kIoWrite,
ToSqliteErrorCode(SqliteResultCode::kIoWrite));
EXPECT_EQ(SqliteErrorCode::kCorruptIndex,
ToSqliteErrorCode(SqliteResultCode::kCorruptIndex));
EXPECT_EQ(SqliteErrorCode::kConstraintUnique,
ToSqliteErrorCode(SqliteResultCode::kConstraintUnique));
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_SqliteInternalError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(ToSqliteErrorCode(SqliteResultCode::kInternal),
"SQLite reported code marked for internal use: 2");
#else
EXPECT_EQ(SqliteErrorCode::kInternal,
ToSqliteErrorCode(SqliteResultCode::kInternal));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_ChromeBugError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(
ToSqliteErrorCode(SqliteResultCode::kNotFound),
"SQLite reported code that should never show up in Chrome: 12");
#else
EXPECT_EQ(SqliteErrorCode::kNotFound,
ToSqliteErrorCode(SqliteResultCode::kNotFound));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteErrorCode_Success) {
EXPECT_TRUE(IsSqliteSuccessCode(SqliteResultCode::kOk));
EXPECT_TRUE(IsSqliteSuccessCode(SqliteResultCode::kDone));
EXPECT_TRUE(IsSqliteSuccessCode(SqliteResultCode::kRow));
}
TEST(SqliteResultCodeTest, IsSqliteSuccessCode_PrimaryErrorCodes) {
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kIo));
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kCorrupt));
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kConstraint));
}
TEST(SqliteResultCodeTest, IsSqliteSuccessCode_ExtendedErrorCodes) {
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kIoRead));
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kIoWrite));
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kCorruptIndex));
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kConstraintUnique));
}
TEST(SqliteResultCodeTest, IsSqliteSuccessCode_SqliteInternalError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(IsSqliteSuccessCode(SqliteResultCode::kInternal),
"SQLite reported code marked for internal use: 2");
#else
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kInternal));
#endif
}
TEST(SqliteResultCodeTest, IsSqliteSuccessCode_ChromeBugError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(
IsSqliteSuccessCode(SqliteResultCode::kNotFound),
"SQLite reported code that should never show up in Chrome: 12");
#else
EXPECT_FALSE(IsSqliteSuccessCode(SqliteResultCode::kNotFound));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_Success) {
EXPECT_EQ(SqliteLoggedResultCode::kNoError,
ToSqliteLoggedResultCode(SQLITE_OK));
EXPECT_EQ(SqliteLoggedResultCode::kNoError,
ToSqliteLoggedResultCode(SQLITE_DONE));
EXPECT_EQ(SqliteLoggedResultCode::kNoError,
ToSqliteLoggedResultCode(SQLITE_ROW));
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_PrimaryErrorCodes) {
EXPECT_EQ(SqliteLoggedResultCode::kIo,
ToSqliteLoggedResultCode(SQLITE_IOERR));
EXPECT_EQ(SqliteLoggedResultCode::kCorrupt,
ToSqliteLoggedResultCode(SQLITE_CORRUPT));
EXPECT_EQ(SqliteLoggedResultCode::kConstraint,
ToSqliteLoggedResultCode(SQLITE_CONSTRAINT));
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_ExtendedErrorCodes) {
EXPECT_EQ(SqliteLoggedResultCode::kIoRead,
ToSqliteLoggedResultCode(SQLITE_IOERR_READ));
EXPECT_EQ(SqliteLoggedResultCode::kIoWrite,
ToSqliteLoggedResultCode(SQLITE_IOERR_WRITE));
EXPECT_EQ(SqliteLoggedResultCode::kCorruptIndex,
ToSqliteLoggedResultCode(SQLITE_CORRUPT_INDEX));
EXPECT_EQ(SqliteLoggedResultCode::kConstraintUnique,
ToSqliteLoggedResultCode(SQLITE_CONSTRAINT_UNIQUE));
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_MissingLowValue) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(ToSqliteLoggedResultCode(-65536),
"Unsupported SQLite result code: -65536");
#else
EXPECT_EQ(SqliteLoggedResultCode::kUnusedChrome,
ToSqliteLoggedResultCode(-65536));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_MissingHighValue) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(ToSqliteLoggedResultCode(65536),
"Unsupported SQLite result code: 65536");
#else
EXPECT_EQ(SqliteLoggedResultCode::kUnusedChrome,
ToSqliteLoggedResultCode(65536));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_SqliteInternalError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(ToSqliteLoggedResultCode(SQLITE_INTERNAL),
"SQLite reported code marked for internal use: 2");
#else
EXPECT_EQ(SqliteLoggedResultCode::kUnusedSqlite,
ToSqliteLoggedResultCode(SQLITE_INTERNAL));
#endif
}
TEST(SqliteResultCodeTest, ToSqliteLoggedResultCode_ChromeBugError) {
#if DCHECK_IS_ON()
EXPECT_DCHECK_DEATH_WITH(
ToSqliteLoggedResultCode(SQLITE_NOTFOUND),
"SQLite reported code that should never show up in Chrome: 12");
#else
EXPECT_EQ(SqliteLoggedResultCode::kUnusedChrome,
ToSqliteLoggedResultCode(SQLITE_NOTFOUND));
#endif
}
TEST(SqliteResultCodeTest, UmaHistogramSqliteResult_Success) {
base::HistogramTester histogram_tester;
UmaHistogramSqliteResult("Sql.ResultTest", SQLITE_OK);
histogram_tester.ExpectTotalCount("Sql.ResultTest", 1);
histogram_tester.ExpectBucketCount("Sql.ResultTest",
SqliteLoggedResultCode::kNoError, 1);
}
TEST(SqliteResultCodeTest, UmaHistogramSqliteResult_PrimaryErrorCode) {
base::HistogramTester histogram_tester;
UmaHistogramSqliteResult("Sql.ResultTest", SQLITE_CORRUPT);
histogram_tester.ExpectTotalCount("Sql.ResultTest", 1);
histogram_tester.ExpectBucketCount("Sql.ResultTest",
SqliteLoggedResultCode::kCorrupt, 1);
}
TEST(SqliteResultCodeTest, UmaHistogramSqliteResult_ExtendedErrorCode) {
base::HistogramTester histogram_tester;
UmaHistogramSqliteResult("Sql.ResultTest", SQLITE_CORRUPT_INDEX);
histogram_tester.ExpectTotalCount("Sql.ResultTest", 1);
histogram_tester.ExpectBucketCount("Sql.ResultTest",
SqliteLoggedResultCode::kCorruptIndex, 1);
}
TEST(SqliteResultCodeTest, CheckMapping) {
CheckSqliteLoggedResultCodeForTesting();
}
} // namespace
} // namespace sql