diff --git a/base/base_tests/logging_test.cpp b/base/base_tests/logging_test.cpp index 1cf4eb271e..ff4bd4d73c 100644 --- a/base/base_tests/logging_test.cpp +++ b/base/base_tests/logging_test.cpp @@ -2,15 +2,15 @@ #include "../../testing/testing.hpp" #include "../logging.hpp" + #include "../../std/utility.hpp" #include "../../std/vector.hpp" + namespace { - static vector > g_LoggedMessages; - void TestLogMessage(my::LogLevel level, my::SrcPoint const &, string const & msg) + void TestLogMessage(my::LogLevel, my::SrcPoint const &, string const &) { - g_LoggedMessages.push_back(make_pair(level, msg)); } bool g_SomeFunctionCalled; @@ -19,25 +19,22 @@ namespace g_SomeFunctionCalled = true; return 3; } - } -UNIT_TEST(LoggingSimple) +UNIT_TEST(Logging_Level) { my::LogLevel const logLevelSaved = my::g_LogLevel; my::g_LogLevel = LWARNING; - g_LoggedMessages.clear(); + g_SomeFunctionCalled = false; - void (*logMessageSaved)(my::LogLevel, my::SrcPoint const &, string const &) = my::LogMessage; - my::LogMessage = &TestLogMessage; + my::LogMessageFn logMessageSaved = my::SetLogMessageFn(&TestLogMessage); + LOG(LINFO, ("This should not pass", SomeFunction())); - //TEST_EQUAL(g_LoggedMessages, (vector >()), (::my::g_LogLevel)); TEST(!g_SomeFunctionCalled, ()); - LOG(LWARNING, ("Test", SomeFunction())); - vector > expectedLoggedMessages; - expectedLoggedMessages.push_back(make_pair(LWARNING, string("Test 3"))); - //TEST_EQUAL(g_LoggedMessages, expectedLoggedMessages, ()); + + LOG(LWARNING, ("This should pass", SomeFunction())); TEST(g_SomeFunctionCalled, ()); - my::LogMessage = logMessageSaved; + + my::SetLogMessageFn(logMessageSaved); my::g_LogLevel = logLevelSaved; } diff --git a/base/logging.cpp b/base/logging.cpp index 2edce12adf..4c26cd8f2a 100644 --- a/base/logging.cpp +++ b/base/logging.cpp @@ -59,10 +59,11 @@ namespace my LogMessageFn LogMessage = &LogMessageDefault; - void SetLogMessageFn(LogMessageFn fn) + LogMessageFn SetLogMessageFn(LogMessageFn fn) { - LogMessage = fn; - }; + std::swap(LogMessage, fn); + return fn; + } #ifdef DEBUG LogLevel g_LogLevel = LDEBUG; diff --git a/base/logging.hpp b/base/logging.hpp index f4c65a6c29..bf1d6d7dde 100644 --- a/base/logging.hpp +++ b/base/logging.hpp @@ -19,7 +19,8 @@ namespace my extern LogMessageFn LogMessage; extern LogLevel g_LogLevel; - void SetLogMessageFn(LogMessageFn fn); + /// @return Pointer to previous message function. + LogMessageFn SetLogMessageFn(LogMessageFn fn); } using ::my::LDEBUG;