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
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,133 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Pionix GmbH and Contributors to EVerest
#include <gtest/gtest.h>
#include <transaction_handler.hpp>
namespace module {
class TransactionHandlerTest : public ::testing::Test {
protected:
void SetUp() override {
}
void TearDown() override {
}
std::shared_ptr<TransactionData> transaction_data() {
return std::make_shared<TransactionData>(1, "123", ocpp::DateTime(), ocpp::v2::TriggerReasonEnum::Authorized,
ocpp::v2::ChargingStateEnum::Idle);
}
};
TEST_F(TransactionHandlerTest, test_authorized) {
TransactionHandler transaction_handler(2, {TxStartStopPoint::Authorized}, {TxStartStopPoint::Authorized});
transaction_handler.add_transaction_data(1, transaction_data());
auto res = transaction_handler.submit_event(1, TxEvent::AUTHORIZED);
ASSERT_EQ(res, TxEventEffect::START_TRANSACTION);
transaction_handler.get_transaction_data(1)->started = true;
res = transaction_handler.submit_event(1, TxEvent::AUTHORIZED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::DEAUTHORIZED);
ASSERT_EQ(res, TxEventEffect::STOP_TRANSACTION);
}
TEST_F(TransactionHandlerTest, test_power_path_closed) {
TransactionHandler transaction_handler(2, {TxStartStopPoint::PowerPathClosed}, {TxStartStopPoint::PowerPathClosed});
transaction_handler.add_transaction_data(1, transaction_data());
auto res = transaction_handler.submit_event(1, TxEvent::AUTHORIZED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::EV_CONNECTED);
ASSERT_EQ(res, TxEventEffect::START_TRANSACTION);
transaction_handler.get_transaction_data(1)->started = true;
res = transaction_handler.submit_event(1, TxEvent::PARKING_BAY_UNOCCUPIED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::EV_CONNECTED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::EV_DISCONNECTED);
ASSERT_EQ(res, TxEventEffect::STOP_TRANSACTION);
}
TEST_F(TransactionHandlerTest, test_ev_connected) {
TransactionHandler transaction_handler(2, {TxStartStopPoint::EVConnected}, {TxStartStopPoint::EVConnected});
transaction_handler.add_transaction_data(1, transaction_data());
auto res = transaction_handler.submit_event(1, TxEvent::EV_CONNECTED);
ASSERT_EQ(res, TxEventEffect::START_TRANSACTION);
transaction_handler.get_transaction_data(1)->started = true;
res = transaction_handler.submit_event(1, TxEvent::DEAUTHORIZED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::EV_DISCONNECTED);
ASSERT_EQ(res, TxEventEffect::STOP_TRANSACTION);
}
TEST_F(TransactionHandlerTest, test_parking_bay_occupied) {
TransactionHandler transaction_handler(2, {TxStartStopPoint::ParkingBayOccupancy},
{TxStartStopPoint::ParkingBayOccupancy});
transaction_handler.add_transaction_data(1, transaction_data());
auto res = transaction_handler.submit_event(1, TxEvent::PARKING_BAY_OCCUPIED);
ASSERT_EQ(res, TxEventEffect::START_TRANSACTION);
transaction_handler.get_transaction_data(1)->started = true;
res = transaction_handler.submit_event(1, TxEvent::EV_DISCONNECTED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::PARKING_BAY_UNOCCUPIED);
ASSERT_EQ(res, TxEventEffect::STOP_TRANSACTION);
}
TEST_F(TransactionHandlerTest, test_multiple) {
TransactionHandler transaction_handler(2, {TxStartStopPoint::EVConnected, TxStartStopPoint::Authorized},
{TxStartStopPoint::PowerPathClosed});
transaction_handler.add_transaction_data(1, transaction_data());
auto res = transaction_handler.submit_event(1, TxEvent::EV_CONNECTED);
ASSERT_EQ(res, TxEventEffect::START_TRANSACTION);
transaction_handler.get_transaction_data(1)->started = true;
res = transaction_handler.submit_event(1, TxEvent::DEAUTHORIZED);
ASSERT_EQ(res, TxEventEffect::STOP_TRANSACTION);
transaction_handler.reset_transaction_data(1);
transaction_handler.add_transaction_data(1, transaction_data());
res = transaction_handler.submit_event(1, TxEvent::AUTHORIZED);
ASSERT_EQ(res, TxEventEffect::START_TRANSACTION);
transaction_handler.get_transaction_data(1)->started = true;
res = transaction_handler.submit_event(1, TxEvent::SIGNED_START_DATA_RECEIVED);
ASSERT_EQ(res, TxEventEffect::NONE);
res = transaction_handler.submit_event(1, TxEvent::EV_DISCONNECTED);
ASSERT_EQ(res, TxEventEffect::STOP_TRANSACTION);
}
TEST_F(TransactionHandlerTest, test_invalid_params) {
TransactionHandler transaction_handler(2, {TxStartStopPoint::EVConnected, TxStartStopPoint::Authorized},
{TxStartStopPoint::PowerPathClosed});
ASSERT_THROW(transaction_handler.get_transaction_data(3), std::out_of_range);
ASSERT_THROW(transaction_handler.reset_transaction_data(3), std::out_of_range);
ASSERT_THROW(transaction_handler.add_transaction_data(-1, transaction_data()), std::out_of_range);
ASSERT_THROW(transaction_handler.add_transaction_data(3, transaction_data()), std::out_of_range);
}
} // namespace module