Files
cariflex/tools/EVerest-main/lib/everest/sqlite/tests/test_connection.cpp
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

77 lines
2.3 KiB
C++

// SPDX-License-Identifier: Apache-2.0
// Copyright 2020 - 2025 Pionix GmbH and Contributors to EVerest
#include <everest/database/sqlite/connection.hpp>
#include <everest/database/sqlite/statement.hpp>
#include <gtest/gtest.h>
#include <sqlite3.h>
#include <filesystem>
#include <string>
namespace fs = std::filesystem;
namespace everest::db::sqlite {
class ConnectionWalTest : public ::testing::Test {
protected:
fs::path db_path;
void SetUp() override {
const auto unique = "everest_sqlite_conn_test_" + std::to_string(reinterpret_cast<std::uintptr_t>(this)) + "_" +
std::to_string(::testing::UnitTest::GetInstance()->random_seed()) + ".db";
db_path = fs::temp_directory_path() / unique;
std::error_code ec;
fs::remove(db_path, ec);
fs::remove(db_path.string() + "-wal", ec);
fs::remove(db_path.string() + "-shm", ec);
}
void TearDown() override {
std::error_code ec;
fs::remove(db_path, ec);
fs::remove(db_path.string() + "-wal", ec);
fs::remove(db_path.string() + "-shm", ec);
}
};
TEST_F(ConnectionWalTest, FileDatabaseUsesWalJournalMode) {
Connection db(db_path);
ASSERT_TRUE(db.open_connection());
{
auto stmt = db.new_statement("PRAGMA journal_mode");
ASSERT_EQ(stmt->step(), SQLITE_ROW);
EXPECT_EQ(stmt->column_text(0), "wal");
}
db.close_connection();
}
TEST_F(ConnectionWalTest, InMemoryDatabaseOpensWithoutWalFailure) {
Connection db(fs::path("file::memory:?cache=shared"));
ASSERT_TRUE(db.open_connection());
db.close_connection();
}
TEST_F(ConnectionWalTest, ExistingRollbackDatabaseMigratesToWal) {
sqlite3* raw = nullptr;
ASSERT_EQ(sqlite3_open_v2(db_path.c_str(), &raw, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nullptr), SQLITE_OK);
ASSERT_EQ(sqlite3_exec(raw, "PRAGMA journal_mode=DELETE; CREATE TABLE t(id INTEGER);", nullptr, nullptr, nullptr),
SQLITE_OK);
sqlite3_close(raw);
Connection db(db_path);
ASSERT_TRUE(db.open_connection());
{
auto stmt = db.new_statement("PRAGMA journal_mode");
ASSERT_EQ(stmt->step(), SQLITE_ROW);
EXPECT_EQ(stmt->column_text(0), "wal");
}
db.close_connection();
}
} // namespace everest::db::sqlite