diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b04724..7f2a697 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -217,7 +217,7 @@ if(test) include_directories("${gtest_SOURCE_DIR}/include") endif() - add_executable(runTests test/main.cpp) + add_executable(runTests test/main.cpp test/eventmanagertest.cpp) target_link_libraries(runTests gtest gtest_main) target_link_libraries(runTests icsneocpp) diff --git a/api/icsneocpp/eventmanager.cpp b/api/icsneocpp/eventmanager.cpp index e38930c..eaf8578 100644 --- a/api/icsneocpp/eventmanager.cpp +++ b/api/icsneocpp/eventmanager.cpp @@ -11,6 +11,10 @@ EventManager& EventManager::GetInstance() { return *singleton.get(); } +void EventManager::ResetInstance() { + singleton = nullptr; +} + void EventManager::get(std::vector& eventOutput, size_t max, EventFilter filter) { std::lock_guard lk(mutex); diff --git a/api/icsneocpp/icsneocpp.cpp b/api/icsneocpp/icsneocpp.cpp index 4734f33..b9f41b1 100644 --- a/api/icsneocpp/icsneocpp.cpp +++ b/api/icsneocpp/icsneocpp.cpp @@ -12,7 +12,7 @@ std::vector icsneo::GetSupportedDevices() { } size_t icsneo::EventCount(EventFilter filter) { - return EventManager::GetInstance().count(filter); + return EventManager::GetInstance().eventCount(filter); } std::vector icsneo::GetEvents(EventFilter filter, size_t max) { diff --git a/include/icsneo/api/eventmanager.h b/include/icsneo/api/eventmanager.h index f002393..1392ab1 100644 --- a/include/icsneo/api/eventmanager.h +++ b/include/icsneo/api/eventmanager.h @@ -17,7 +17,9 @@ class EventManager { public: static EventManager& GetInstance(); - size_t count(EventFilter filter = EventFilter()) const { + static void ResetInstance(); + + size_t eventCount(EventFilter filter = EventFilter()) const { std::lock_guard lk(mutex); return count_internal(filter); }; @@ -61,8 +63,10 @@ public: size_t getEventLimit() const { return eventLimit; } + + private: - EventManager() {} + EventManager() : mutex(), events(), lastUserErrors(), eventLimit(10000) {} // Used by functions for threadsafety mutable std::mutex mutex; diff --git a/test/eventmanagertest.cpp b/test/eventmanagertest.cpp new file mode 100644 index 0000000..74c85e1 --- /dev/null +++ b/test/eventmanagertest.cpp @@ -0,0 +1,32 @@ +#include "icsneo/icsneocpp.h" +#include "gtest/gtest.h" + +using namespace icsneo; + +class EventManagerTest : public ::testing::Test { +protected: + void TearDown() override { + EventManager::ResetInstance(); + } +}; + +TEST_F(EventManagerTest, GetLastErrorTest) { + EventManager::GetInstance().add(APIEvent(APIEvent::Type::OutputTruncated, APIEvent::Severity::Error)); + EXPECT_EQ(GetLastError().getType(), APIEvent::Type::OutputTruncated); + auto err = GetLastError(); + EXPECT_EQ(err.getType(), APIEvent::Type::NoErrorFound); + EXPECT_EQ(err.getSeverity(), APIEvent::Severity::EventInfo); +} + +TEST_F(EventManagerTest, CountTest) { + EventManager::GetInstance().add(APIEvent(APIEvent::Type::OutputTruncated, APIEvent::Severity::Error)); + EXPECT_EQ(EventCount(), 0); + EventManager::GetInstance().add(APIEvent(APIEvent::Type::OutputTruncated, APIEvent::Severity::EventWarning)); + EXPECT_EQ(EventCount(), 1); + EventManager::GetInstance().add(APIEvent(APIEvent::Type::OutputTruncated, APIEvent::Severity::EventInfo)); + EXPECT_EQ(EventCount(), 2); + GetEvents(EventFilter(APIEvent::Severity::EventInfo)); + EXPECT_EQ(EventCount(), 1); + GetEvents(); + EXPECT_EQ(EventCount(), 0); +} \ No newline at end of file diff --git a/test/main.cpp b/test/main.cpp index bbc1ba7..8401258 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,22 +1,5 @@ -#include "icsneo/api/eventmanager.h" #include "gtest/gtest.h" -using namespace icsneo; - -class EventManagerTest : public ::testing::Test { - -}; - -TEST_F(EventManagerTest, GetLastErrorTest) { - EventManager::GetInstance().add(APIEvent(APIEvent::Type::OutputTruncated, APIEvent::Severity::Error)); - EXPECT_EQ(EventManager::GetInstance().getLastError().getType(), APIEvent::Type::OutputTruncated); -} - -TEST_F(EventManagerTest, CountTest) { - EventManager::GetInstance().add(APIEvent(APIEvent::Type::OutputTruncated, APIEvent::Severity::Error)); - EXPECT_EQ(EventManager::GetInstance().count(), 1); -} - int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS();