This commit is contained in:
Bart Beumer 2025-07-27 10:01:54 +00:00
parent 8e657df097
commit ea55d3e6fd
3 changed files with 87 additions and 0 deletions

View File

@ -19,3 +19,25 @@ target_include_directories(
${PROJECT_NAME} ${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
) )
project(awesome_log_test)
find_package(GTest REQUIRED)
add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})
add_executable(
${PROJECT_NAME}
./test/test_scoped_log.cpp
)
set_property(
TARGET ${PROJECT_NAME}
PROPERTY CXX_STANDARD 20
)
target_link_libraries(
${PROJECT_NAME}
PUBLIC
awesome_log
GTest::gtest_main
GTest::gmock
)

View File

@ -0,0 +1,13 @@
#pragma once
#include <awesome_log/writer_interface.hpp>
#include <gmock/gmock.h>
class mock_writer : public awesome_log::writer_interface
{
public:
~mock_writer() override = default;
MOCK_METHOD(void, log, (std::string_view), (override));
};

View File

@ -0,0 +1,52 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "mock_writer.hpp"
#include <awesome_log/log.hpp>
#include <awesome_log/scoped_log.hpp>
#include <memory>
class test_scoped_log : public ::testing::Test
{
public:
void SetUp() override
{
m_writer = std::make_shared<mock_writer>();
awesome_log::set_writer(m_writer);
}
void TearDown() override
{
awesome_log::set_writer(std::shared_ptr<awesome_log::writer_interface>());
}
protected:
std::shared_ptr<mock_writer> m_writer;
};
TEST_F(test_scoped_log, log_normal_flow)
{
EXPECT_CALL(*m_writer, log("> log"));
EXPECT_CALL(*m_writer, log("< log"));
{
awesome_log::scoped_log a("log");
}
}
TEST_F(test_scoped_log, log_stack_unwind)
{
EXPECT_CALL(*m_writer, log("> log"));
EXPECT_CALL(*m_writer, log("< log (stack unwinding)"));
try
{
awesome_log::scoped_log a("log");
throw std::runtime_error("");
}
catch(const std::exception& e)
{
// Not doing anything
}
}