From a6f275b7423078fe3d029f341c7f67182ca8da48 Mon Sep 17 00:00:00 2001 From: Janosch Date: Mon, 10 Oct 2022 16:46:25 +0100 Subject: [PATCH] adding repetitive DigIo mock test --- include/functions.h | 16 +++++++ src/main.cpp | 12 ----- tesla.cbp | 107 ++++++++++++++++++++++++++++++++++++++++++++ test/test.c | 2 + test/test.out | Bin 42576 -> 49688 bytes test/test_common.h | 2 + test/test_io.h | 43 ++++++++++++++++++ test/test_state.h | 1 - 8 files changed, 170 insertions(+), 13 deletions(-) create mode 100644 tesla.cbp create mode 100644 test/test_io.h diff --git a/include/functions.h b/include/functions.h index d7003c9..f761487 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1,4 +1,7 @@ #include "../libopeninv/include/params.h" +#ifdef TEST_COMMON_H +#include "../test/digio_mock.h" +#endif static bool IsEvseInput(); static void DisableAll(); @@ -13,3 +16,16 @@ static bool CheckUnplugged() { return IsEvseInput() && !Param::GetBool(Param::proximity); } + +static void DisableAll() +{ + DigIo::hvena_out.Clear(); + DigIo::acpres_out.Clear(); + DigIo::evseact_out.Clear(); + DigIo::ch1act_out.Clear(); + DigIo::ch2act_out.Clear(); + DigIo::ch2act_out.Clear(); + DigIo::ch1ena_out.Clear(); + DigIo::ch2ena_out.Clear(); + DigIo::ch3ena_out.Clear(); +} diff --git a/src/main.cpp b/src/main.cpp index efc3fee..43ee6b9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -120,18 +120,6 @@ static void EvseRead() } } -static void DisableAll() -{ - DigIo::hvena_out.Clear(); - DigIo::acpres_out.Clear(); - DigIo::evseact_out.Clear(); - DigIo::ch1act_out.Clear(); - DigIo::ch2act_out.Clear(); - DigIo::ch2act_out.Clear(); - DigIo::ch1ena_out.Clear(); - DigIo::ch2ena_out.Clear(); - DigIo::ch3ena_out.Clear(); -} static bool CheckStartCondition() diff --git a/tesla.cbp b/tesla.cbp new file mode 100644 index 0000000..b61f75d --- /dev/null +++ b/tesla.cbp @@ -0,0 +1,107 @@ + + + + + + diff --git a/test/test.c b/test/test.c index 7cb21a4..a69ebf9 100644 --- a/test/test.c +++ b/test/test.c @@ -3,6 +3,7 @@ #include "../libopeninv/include/params.h" #include "test.h" #include "test_can.h" +#include "test_io.h" #include "test_state.h" extern void Param::Change(Param::PARAM_NUM ParamNum){ }; @@ -16,6 +17,7 @@ int main() { TestCase tests[] = { (TestCase){"test_is_evse_input", test_is_evse_input}, (TestCase){"test_check_unplugged", test_check_unplugged}, + (TestCase){"test_disable_all", test_disable_all}, // Example: //(TestCase){"Your tests name", function_name_without_brackets} //... diff --git a/test/test.out b/test/test.out index 29e27f3a7fc390d61e85c8356cac8a844fd7cfb6..0cd2e3eb922b8e8217074bb90d63281f9d12a93d 100755 GIT binary patch literal 49688 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 C;-%;S literal 42576 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 +#include "test_common.h" + +void test_disable_all() +{ + DigIo::hvena_out.Set(); + DigIo::acpres_out.Set(); + DigIo::evseact_out.Set(); + DigIo::ch1act_out.Set(); + DigIo::ch2act_out.Set(); + DigIo::ch2act_out.Set(); + DigIo::ch1ena_out.Set(); + DigIo::ch2ena_out.Set(); + DigIo::ch3ena_out.Set(); + + assert(DigIo::hvena_out.Get()); + assert(DigIo::hvena_out.Get()); + assert(DigIo::acpres_out.Get()); + assert(DigIo::evseact_out.Get()); + assert(DigIo::ch1act_out.Get()); + assert(DigIo::ch2act_out.Get()); + assert(DigIo::ch2act_out.Get()); + assert(DigIo::ch1ena_out.Get()); + assert(DigIo::ch2ena_out.Get()); + assert(DigIo::ch3ena_out.Get()); + + DisableAll(); + + assert(!DigIo::hvena_out.Get()); + assert(!DigIo::hvena_out.Get()); + assert(!DigIo::acpres_out.Get()); + assert(!DigIo::evseact_out.Get()); + assert(!DigIo::ch1act_out.Get()); + assert(!DigIo::ch2act_out.Get()); + assert(!DigIo::ch2act_out.Get()); + assert(!DigIo::ch1ena_out.Get()); + assert(!DigIo::ch2ena_out.Get()); + assert(!DigIo::ch3ena_out.Get()); + +} diff --git a/test/test_state.h b/test/test_state.h index 2ca8f1d..16d7f51 100644 --- a/test/test_state.h +++ b/test/test_state.h @@ -3,7 +3,6 @@ #endif #include #include "test_common.h" -#include "functions.h" void test_is_evse_input() {