From d2dbe4feee7e150683867a1d459b4b88325371e1 Mon Sep 17 00:00:00 2001 From: Matteo Botticci Date: Mon, 20 May 2024 10:41:30 +0200 Subject: [PATCH] Introduced some tests --- test/AbstractTopicTest.cpp | 28 +++++++++++++++++++ test/CMakeLists.txt | 5 ++-- test/MockSubscriber.h | 29 +++++++++++++++++++ test/TopicManagerTest.cpp | 57 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 test/AbstractTopicTest.cpp create mode 100644 test/MockSubscriber.h create mode 100644 test/TopicManagerTest.cpp diff --git a/test/AbstractTopicTest.cpp b/test/AbstractTopicTest.cpp new file mode 100644 index 0000000..b44125e --- /dev/null +++ b/test/AbstractTopicTest.cpp @@ -0,0 +1,28 @@ +#include +#include "MockSubscriber.h" +#include "ResultCode.h" + +using namespace DogBreeds::JackRussell; + +class AbstractTopicTest : public ::testing::Test { + protected: + std::shared_ptr topic; + void SetUp() override { + topic = std::make_shared("test_topic"); + } +}; + +TEST_F(AbstractTopicTest, AddSubscriber) { + auto subscriber = std::make_shared>("test_subscriber"); + EXPECT_EQ(topic->addSubscriber(subscriber), ResultCode::OK); +} + +TEST_F(AbstractTopicTest, RemoveSubscriber) { + auto subscriber = std::make_shared>("test_subscriber"); + topic->addSubscriber(subscriber); + EXPECT_EQ(topic->removeSubscriber(subscriber), ResultCode::OK); +} + +TEST_F(AbstractTopicTest, GetName) { + EXPECT_EQ(topic->getName(), "test_topic"); +} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 93430ce..8ddfc05 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,6 +40,7 @@ target_compile_definitions(jackrussell_test_exe target_include_directories(jackrussell_test_exe PUBLIC "${PROJECT_SOURCE_DIR}/include" + PUBLIC "${PROJECT_SOURCE_DIR}/test" Labrador ) @@ -50,7 +51,7 @@ target_link_libraries(jackrussell_test_exe JackRussell ) -# add_test(test_bounded_queue jackrussell_test_exe --gtest_filter=BoundedQueueTest*) -# add_test(test_concurrent_queue jackrussell_test_exe --gtest_filter=ConcurrentQueueTest*) +add_test(AbstractTopicTest jackrussell_test_exe --gtest_filter=AbstractTopicTest*) +add_test(TopicManagerTest jackrussell_test_exe --gtest_filter=TopicManagerTest*) diff --git a/test/MockSubscriber.h b/test/MockSubscriber.h new file mode 100644 index 0000000..47771e3 --- /dev/null +++ b/test/MockSubscriber.h @@ -0,0 +1,29 @@ +/* + * MockSubscriber.h + * + * Created on: 20 mag 2024 + * Author: BOTTICCIM + */ + +#ifndef TEST_MOCKSUBSCRIBER_H_ +#define TEST_MOCKSUBSCRIBER_H_ + +#include "Subscriber.hpp" +#include + +namespace DogBreeds { +namespace JackRussell { + +template +class MockSubscriber : public Subscriber { + public: + MockSubscriber(const std::string &name) : Subscriber(name) {} + MOCK_METHOD(void, onMessage, (std::shared_ptr message), (const, override)); +}; + +} // namespace JackRussell +} // namespace DogBreeds + + + +#endif /* TEST_MOCKSUBSCRIBER_H_ */ diff --git a/test/TopicManagerTest.cpp b/test/TopicManagerTest.cpp new file mode 100644 index 0000000..c48e961 --- /dev/null +++ b/test/TopicManagerTest.cpp @@ -0,0 +1,57 @@ +// test_topic.cpp +#include +#include "MockSubscriber.h" +#include "Topic.hpp" +#include "TopicManager.h" +#include "ResultCode.h" + +using namespace DogBreeds::JackRussell; + + +class TopicManagerTest : public ::testing::Test { + protected: + TopicManager &manager = TopicManager::getInstance(); + void SetUp() override { + manager = TopicManager::getInstance(); + } +}; + +TEST_F(TopicManagerTest, CreateTopic) { + EXPECT_EQ(manager.createTopic("test_topic"), ResultCode::OK); +} + +TEST_F(TopicManagerTest, CreateExistingTopic) { + manager.createTopic("test_topic"); + EXPECT_EQ(manager.createTopic("test_topic"), ResultCode::TOPIC_ALREDY_EXIST); +} + +TEST_F(TopicManagerTest, DeleteTopic) { + manager.createTopic("test_topic"); + EXPECT_EQ(manager.deleteTopic("test_topic"), ResultCode::OK); +} + +TEST_F(TopicManagerTest, SubscribeToTopic) { + manager.createTopic("test_topic"); + auto subscriber = std::make_shared>("test_subscriber"); + EXPECT_EQ(manager.subscribeToTopic(subscriber, "test_topic"), ResultCode::OK); +} + +TEST_F(TopicManagerTest, UnsubscribeFromTopic) { + manager.createTopic("test_topic"); + auto subscriber = std::make_shared>("test_subscriber"); + manager.subscribeToTopic(subscriber, "test_topic"); + EXPECT_EQ(manager.unsubscribeFromTopic(subscriber, "test_topic"), ResultCode::OK); +} + +TEST_F(TopicManagerTest, PublishToTopic) { + manager.createTopic("test_topic"); + auto subscriber = std::make_shared>("test_subscriber"); + manager.subscribeToTopic(subscriber, "test_topic"); + + auto message = std::make_shared(42); + EXPECT_CALL(*subscriber, onMessage(message)).Times(1); + + EXPECT_EQ(manager.publishToTopic("test_topic", message), ResultCode::OK); +} + +