Files
cariflex/tools/EVerest-main/modules/Misc/ErrorHistory/tests/helpers.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

135 lines
7.6 KiB
C++

// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest
#include "helpers.hpp"
#include <catch2/catch_all.hpp>
#include <utils/error.hpp>
fs::path get_bin_dir() {
return fs::canonical("/proc/self/exe").parent_path();
}
std::string get_unique_db_name() {
return "error_database_sqlite_" + Everest::error::UUID().to_string() + ".db";
}
std::vector<Everest::error::ErrorPtr> get_test_errors() {
return {// index 0
std::make_shared<Everest::error::Error>(
"test_type_a", "test_sub_type_a", "test_message_a", "test_description_a",
ImplementationIdentifier("test_origin_module_a", "test_origin_implementation_a"), "everest-test",
Everest::error::Severity::Low, date::utc_clock::now(), Everest::error::UUID(),
Everest::error::State::ClearedByModule),
// index 1
std::make_shared<Everest::error::Error>(
"test_type_b", "test_sub_type_b", "test_message_b", "test_description_b",
ImplementationIdentifier("test_origin_module_b", "test_origin_implementation_b"), "everest-test",
Everest::error::Severity::Low, date::utc_clock::now() + std::chrono::hours(1), Everest::error::UUID(),
Everest::error::State::ClearedByModule),
// index 2
std::make_shared<Everest::error::Error>(
"test_type_c", "test_sub_type_c", "test_message_c", "test_description_c",
ImplementationIdentifier("test_origin_module_a", "test_origin_implementation_a"), "everest-test",
Everest::error::Severity::Low, date::utc_clock::now() + std::chrono::hours(2), Everest::error::UUID(),
Everest::error::State::ClearedByModule),
// index 3
std::make_shared<Everest::error::Error>(
"test_type_c", "test_sub_type_c", "test_message_c", "test_description_c",
ImplementationIdentifier("test_origin_module_c", "test_origin_implementation_c"), "everest-test",
Everest::error::Severity::Low, date::utc_clock::now() + std::chrono::hours(3), Everest::error::UUID(),
Everest::error::State::Active),
// index 4
std::make_shared<Everest::error::Error>(
"test_type_c", "test_sub_type_a", "test_message_c", "test_description_c",
ImplementationIdentifier("test_origin_module_a", "test_origin_implementation_a"), "everest-test",
Everest::error::Severity::Medium, date::utc_clock::now() + std::chrono::hours(4),
Everest::error::UUID(), Everest::error::State::Active),
// index 5
std::make_shared<Everest::error::Error>(
"test_type_c", "test_sub_type_a", "test_message_c", "test_description_c",
ImplementationIdentifier("test_origin_module_c", "test_origin_implementation_c"), "everest-test",
Everest::error::Severity::Medium, date::utc_clock::now() + std::chrono::hours(5),
Everest::error::UUID(), Everest::error::State::Active),
// index 6
std::make_shared<Everest::error::Error>(
"test_type_a", "test_sub_type_a", "test_message_a", "test_description_a",
ImplementationIdentifier("test_origin_module_a", "test_origin_implementation_a"), "everest-test",
Everest::error::Severity::Medium, date::utc_clock::now() + std::chrono::hours(6),
Everest::error::UUID(), Everest::error::State::ClearedByReboot),
// index 7
std::make_shared<Everest::error::Error>(
"test_type_a", "test_sub_type_a", "test_message_a", "test_description_a",
ImplementationIdentifier("test_origin_module_c", "test_origin_implementation_c"), "everest-test",
Everest::error::Severity::Medium, date::utc_clock::now() + std::chrono::hours(7),
Everest::error::UUID(), Everest::error::State::ClearedByReboot),
// index 8
std::make_shared<Everest::error::Error>(
"test_type_a", "test_sub_type_a", "test_message_a", "test_description_a",
ImplementationIdentifier("test_origin_module_a", "test_origin_implementation_a"), "everest-test",
Everest::error::Severity::High, date::utc_clock::now() + std::chrono::hours(8), Everest::error::UUID(),
Everest::error::State::ClearedByReboot),
// index 9
std::make_shared<Everest::error::Error>(
"test_type_c", "test_sub_type_c", "test_message_c", "test_description_c",
ImplementationIdentifier("test_origin_module_c", "test_origin_implementation_c"), "everest-test",
Everest::error::Severity::High, date::utc_clock::now() + std::chrono::hours(9), Everest::error::UUID(),
Everest::error::State::ClearedByReboot),
// index 10
std::make_shared<Everest::error::Error>(
"test_type_c", "test_sub_type_c", "test_message_c", "test_description_c",
ImplementationIdentifier("test_origin_module_a", "test_origin_implementation_a"), "everest-test",
Everest::error::Severity::High, date::utc_clock::now() + std::chrono::hours(10), Everest::error::UUID(),
Everest::error::State::ClearedByReboot),
// index 11
std::make_shared<Everest::error::Error>(
"test_type_b", "test_sub_type_b", "test_message_b", "test_description_b",
ImplementationIdentifier("test_origin_module_c", "test_origin_implementation_c"), "everest-test",
Everest::error::Severity::High, date::utc_clock::now() + std::chrono::hours(11), Everest::error::UUID(),
Everest::error::State::ClearedByReboot)};
}
void check_expected_errors_in_list(const std::vector<Everest::error::ErrorPtr>& expected_errors,
const std::list<Everest::error::ErrorPtr>& errors) {
REQUIRE(expected_errors.size() == errors.size());
for (Everest::error::ErrorPtr exp_err : expected_errors) {
auto result = std::find_if(errors.begin(), errors.end(), [&exp_err](const Everest::error::ErrorPtr& err) {
return exp_err->uuid == err->uuid;
});
REQUIRE(result != errors.end());
REQUIRE((*result)->type == exp_err->type);
REQUIRE((*result)->message == exp_err->message);
REQUIRE((*result)->description == exp_err->description);
REQUIRE((*result)->origin == exp_err->origin);
REQUIRE((*result)->severity == exp_err->severity);
REQUIRE(Everest::Date::to_rfc3339((*result)->timestamp) == Everest::Date::to_rfc3339(exp_err->timestamp));
REQUIRE((*result)->state == exp_err->state);
}
}
TestDatabase::TestDatabase(const fs::path& db_path_, const bool reset_) :
db_path(db_path_), db(std::make_unique<module::ErrorDatabaseSqlite>(db_path_, reset_)) {
}
TestDatabase::~TestDatabase() {
fs::remove(db_path);
}
void TestDatabase::add_error(Everest::error::ErrorPtr error) {
db->add_error(error);
}
std::list<Everest::error::ErrorPtr>
TestDatabase::get_errors(const std::list<Everest::error::ErrorFilter>& filters) const {
return db->get_errors(filters);
}
std::list<Everest::error::ErrorPtr> TestDatabase::edit_errors(const std::list<Everest::error::ErrorFilter>& filters,
Everest::error::ErrorDatabase::EditErrorFunc edit_func) {
return db->edit_errors(filters, edit_func);
}
std::list<Everest::error::ErrorPtr> TestDatabase::remove_errors(const std::list<Everest::error::ErrorFilter>& filters) {
return db->remove_errors(filters);
}