Skip to content

Commit

Permalink
Introduced some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Matteo Botticci committed May 20, 2024
1 parent 6b9b492 commit d2dbe4f
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 2 deletions.
28 changes: 28 additions & 0 deletions test/AbstractTopicTest.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <gtest/gtest.h>
#include "MockSubscriber.h"
#include "ResultCode.h"

using namespace DogBreeds::JackRussell;

class AbstractTopicTest : public ::testing::Test {
protected:
std::shared_ptr<AbstractTopic> topic;
void SetUp() override {
topic = std::make_shared<AbstractTopic>("test_topic");
}
};

TEST_F(AbstractTopicTest, AddSubscriber) {
auto subscriber = std::make_shared<MockSubscriber<int>>("test_subscriber");
EXPECT_EQ(topic->addSubscriber(subscriber), ResultCode::OK);
}

TEST_F(AbstractTopicTest, RemoveSubscriber) {
auto subscriber = std::make_shared<MockSubscriber<int>>("test_subscriber");
topic->addSubscriber(subscriber);
EXPECT_EQ(topic->removeSubscriber(subscriber), ResultCode::OK);
}

TEST_F(AbstractTopicTest, GetName) {
EXPECT_EQ(topic->getName(), "test_topic");
}
5 changes: 3 additions & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

Expand All @@ -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*)


29 changes: 29 additions & 0 deletions test/MockSubscriber.h
Original file line number Diff line number Diff line change
@@ -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 <gmock/gmock.h>

namespace DogBreeds {
namespace JackRussell {

template <typename T>
class MockSubscriber : public Subscriber<T> {
public:
MockSubscriber(const std::string &name) : Subscriber<T>(name) {}
MOCK_METHOD(void, onMessage, (std::shared_ptr<T> message), (const, override));
};

} // namespace JackRussell
} // namespace DogBreeds



#endif /* TEST_MOCKSUBSCRIBER_H_ */
57 changes: 57 additions & 0 deletions test/TopicManagerTest.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// test_topic.cpp
#include <gtest/gtest.h>
#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<int>("test_topic"), ResultCode::OK);
}

TEST_F(TopicManagerTest, CreateExistingTopic) {
manager.createTopic<int>("test_topic");
EXPECT_EQ(manager.createTopic<int>("test_topic"), ResultCode::TOPIC_ALREDY_EXIST);
}

TEST_F(TopicManagerTest, DeleteTopic) {
manager.createTopic<int>("test_topic");
EXPECT_EQ(manager.deleteTopic("test_topic"), ResultCode::OK);
}

TEST_F(TopicManagerTest, SubscribeToTopic) {
manager.createTopic<int>("test_topic");
auto subscriber = std::make_shared<MockSubscriber<int>>("test_subscriber");
EXPECT_EQ(manager.subscribeToTopic(subscriber, "test_topic"), ResultCode::OK);
}

TEST_F(TopicManagerTest, UnsubscribeFromTopic) {
manager.createTopic<int>("test_topic");
auto subscriber = std::make_shared<MockSubscriber<int>>("test_subscriber");
manager.subscribeToTopic(subscriber, "test_topic");
EXPECT_EQ(manager.unsubscribeFromTopic(subscriber, "test_topic"), ResultCode::OK);
}

TEST_F(TopicManagerTest, PublishToTopic) {
manager.createTopic<int>("test_topic");
auto subscriber = std::make_shared<MockSubscriber<int>>("test_subscriber");
manager.subscribeToTopic(subscriber, "test_topic");

auto message = std::make_shared<int>(42);
EXPECT_CALL(*subscriber, onMessage(message)).Times(1);

EXPECT_EQ(manager.publishToTopic("test_topic", message), ResultCode::OK);
}


0 comments on commit d2dbe4f

Please sign in to comment.