Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /sql /sqlite_result_code_unittest.cc
blob: 328f29e1b7b92ba16cb75457c29a37cd57a17a3a [file] [log] [blame] [edit]
// 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/dcheck_is_on.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,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_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){
EXPECT_CHECK_DEATH_WITH(ToSqliteLoggedResultCode(-65536),
"Unsupported SQLite result code: -65536");
}
TEST(SqliteResultCodeTest,ToSqliteLoggedResultCode_MissingHighValue){
EXPECT_CHECK_DEATH_WITH(ToSqliteLoggedResultCode(65536),
"Unsupported SQLite result code: 65536");
}
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

[8]ページ先頭

©2009-2025 Movatter.jp