forked from matth-x/MicroOcpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTransactionSafety.cpp
More file actions
99 lines (82 loc) · 2.94 KB
/
TransactionSafety.cpp
File metadata and controls
99 lines (82 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// matth-x/MicroOcpp
// Copyright Matthias Akstaller 2019 - 2024
// MIT License
#include <MicroOcpp.h>
#include <MicroOcpp/Core/Connection.h>
#include <MicroOcpp/Core/Context.h>
#include <MicroOcpp/Model/Model.h>
#include <MicroOcpp/Core/Configuration.h>
#include <MicroOcpp/Operations/BootNotification.h>
#include <MicroOcpp/Operations/StatusNotification.h>
#include <MicroOcpp/Debug.h>
#include <catch2/catch.hpp>
#include "./helpers/testHelper.h"
using namespace MicroOcpp;
TEST_CASE( "Transaction safety" ) {
printf("\nRun %s\n", "Transaction safety");
//initialize Context with dummy socket
LoopbackConnection loopback;
mocpp_initialize(loopback);
mocpp_set_timer(custom_timer_cb);
declareConfiguration<int>("ConnectionTimeOut", 30)->setInt(30);
SECTION("Basic transaction") {
MO_DBG_DEBUG("Basic transaction");
loop();
startTransaction("mIdTag");
loop();
REQUIRE(ocppPermitsCharge());
stopTransaction();
loop();
REQUIRE(!ocppPermitsCharge());
mocpp_deinitialize();
}
SECTION("Managed transaction") {
MO_DBG_DEBUG("Managed transaction");
loop();
setConnectorPluggedInput([] () {return true;});
beginTransaction("mIdTag");
loop();
REQUIRE(ocppPermitsCharge());
endTransaction();
loop();
REQUIRE(!ocppPermitsCharge());
mocpp_deinitialize();
}
SECTION("Reset during transaction 01 - interrupt initiation") {
MO_DBG_DEBUG("Reset during transaction 01 - interrupt initiation");
setConnectorPluggedInput([] () {return false;});
loop();
beginTransaction("mIdTag");
loop();
mocpp_deinitialize(); //reset and jump to next section
}
SECTION("Reset during transaction 02 - interrupt initiation second time") {
MO_DBG_DEBUG("Reset during transaction 02 - interrupt initiation second time");
setConnectorPluggedInput([] () {return false;});
loop();
REQUIRE(!ocppPermitsCharge());
mocpp_deinitialize();
}
SECTION("Reset during transaction 03 - interrupt running tx") {
MO_DBG_DEBUG("Reset during transaction 03 - interrupt running tx");
setConnectorPluggedInput([] () {return true;});
loop();
REQUIRE(ocppPermitsCharge());
mocpp_deinitialize();
}
SECTION("Reset during transaction 04 - interrupt stopping tx") {
MO_DBG_DEBUG("Reset during transaction 04 - interrupt stopping tx");
setConnectorPluggedInput([] () {return true;});
loop();
REQUIRE(ocppPermitsCharge());
endTransaction();
mocpp_deinitialize();
}
SECTION("Reset during transaction 06 - check tx finished") {
MO_DBG_DEBUG("Reset during transaction 06 - check tx finished");
setConnectorPluggedInput([] () {return true;});
loop();
REQUIRE(!ocppPermitsCharge());
mocpp_deinitialize();
}
}