From 0a3f2e4e6d2bd3841933bf05833182004d1b4a03 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Sat, 25 Feb 2023 12:22:00 +0000 Subject: [PATCH] ut --- src/EvtContext.cpp | 4 ++- src/EvtListener.h | 3 +- src/EvtManager.cpp | 23 +++++++------- src/EvtManager.h | 2 +- src/main.cpp | 12 +++++++ src/main.h | 1 + test/test_evt_manager/test_evt_manager.cpp | 37 ++++++++++++++++++++++ 7 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 src/main.cpp create mode 100644 src/main.h create mode 100644 test/test_evt_manager/test_evt_manager.cpp diff --git a/src/EvtContext.cpp b/src/EvtContext.cpp index 555b29f..1dc295b 100644 --- a/src/EvtContext.cpp +++ b/src/EvtContext.cpp @@ -6,8 +6,10 @@ EvtContext::EvtContext() void EvtContext::loopIteration() { - for (int i = 0; i < _listenerCount; i++) + printf("111111111\n"); + for (byte i = 0; i < _listenerCount; i++) { + printf("111111111\n"); if (_listeners[i]) { if (_listeners[i]->isEventTriggered()) diff --git a/src/EvtListener.h b/src/EvtListener.h index 5a52818..418bb12 100644 --- a/src/EvtListener.h +++ b/src/EvtListener.h @@ -14,9 +14,7 @@ class EvtContext; class EvtListener { public: - void *_extraData = 0; EvtAction _triggerAction; - bool _enabled = true; virtual void setupListener(); virtual bool isEventTriggered(); @@ -27,6 +25,7 @@ class EvtListener virtual ~EvtListener(); protected: + bool _enabled = true; }; #endif \ No newline at end of file diff --git a/src/EvtManager.cpp b/src/EvtManager.cpp index 3c35829..cd42a95 100644 --- a/src/EvtManager.cpp +++ b/src/EvtManager.cpp @@ -2,45 +2,46 @@ EvtManager::EvtManager() { - _contextStack = new EvtContext[EVENTUALLY_MAX_CONTEXTS]; - _contextStack[_contextOffset].setupContext(); + _contextStack[_contextOffset] = new EvtContext(); + _contextStack[_contextOffset]->setupContext(); } void EvtManager::addListener(EvtListener *lstn) { - _contextStack[_contextOffset].addListener(lstn); + printf("111111111\n"); + _contextStack[_contextOffset]->addListener(lstn); } void EvtManager::removeListener(EvtListener *lstn) { - _contextStack[_contextOffset].removeListener(lstn); + _contextStack[_contextOffset]->removeListener(lstn); } EvtContext *EvtManager::currentContext() { - return &_contextStack[_contextOffset]; + return _contextStack[_contextOffset]; } EvtContext *EvtManager::pushContext() { _contextOffset++; - _contextStack[_contextOffset].setupContext(); - return &_contextStack[_contextOffset]; + _contextStack[_contextOffset]->setupContext(); + return _contextStack[_contextOffset]; } EvtContext *EvtManager::resetContext() { - _contextStack[_contextOffset].setupContext(); - return &_contextStack[_contextOffset]; + _contextStack[_contextOffset]->setupContext(); + return _contextStack[_contextOffset]; } EvtContext *EvtManager::popContext() { _contextOffset--; - return &_contextStack[_contextOffset]; + return _contextStack[_contextOffset]; } void EvtManager::loopIteration() { - _contextStack[_contextOffset].loopIteration(); + _contextStack[_contextOffset]->loopIteration(); } \ No newline at end of file diff --git a/src/EvtManager.h b/src/EvtManager.h index fb18942..e9dc712 100644 --- a/src/EvtManager.h +++ b/src/EvtManager.h @@ -24,7 +24,7 @@ class EvtManager void removeListener(EvtListener *lstn); private: - EvtContext *_contextStack = 0; + EvtContext *_contextStack[EVENTUALLY_MAX_CONTEXTS]; byte _contextOffset = 0; byte _contextDepth = 0; }; diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..f18fcb0 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,12 @@ +#include "main.h" + +EvtManager mgr; + +void setup() +{ +} + +void loop() +{ + mgr.loopIteration(); +} \ No newline at end of file diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..b7601b9 --- /dev/null +++ b/src/main.h @@ -0,0 +1 @@ +#include "Eventually.h" \ No newline at end of file diff --git a/test/test_evt_manager/test_evt_manager.cpp b/test/test_evt_manager/test_evt_manager.cpp new file mode 100644 index 0000000..36959dd --- /dev/null +++ b/test/test_evt_manager/test_evt_manager.cpp @@ -0,0 +1,37 @@ +#include +#include + +#include "EvtManager.h" + +using namespace fakeit; + +EvtManager target; +Mock listenerMock; + +void setUp(void) +{ + When(Method(listenerMock, setupListener)).AlwaysReturn(); + When(Method(listenerMock, isEventTriggered)).AlwaysReturn(true); + When(Method(listenerMock, performTriggerAction)).AlwaysReturn(); +} + +void tearDown(void) +{ + listenerMock.Reset(); +} + +void test_default_to_one_context(void) +{ + EvtListener &listener = listenerMock.get(); + target.addListener(&listener); + target.loopIteration(); +} + +int main(int argc, char **argv) +{ + UNITY_BEGIN(); + RUN_TEST(test_default_to_one_context); + UNITY_END(); + + return 0; +} \ No newline at end of file