SetLogMessageFn now returns old function pointer.

This commit is contained in:
vng 2011-07-03 12:54:11 +03:00 committed by Alex Zolotarev
parent f15f79bdcc
commit dd135f2c5a
3 changed files with 17 additions and 18 deletions

View file

@ -2,15 +2,15 @@
#include "../../testing/testing.hpp"
#include "../logging.hpp"
#include "../../std/utility.hpp"
#include "../../std/vector.hpp"
namespace
{
static vector<pair<my::LogLevel, string> > 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<pair<my::LogLevel, string> >()), (::my::g_LogLevel));
TEST(!g_SomeFunctionCalled, ());
LOG(LWARNING, ("Test", SomeFunction()));
vector<pair<my::LogLevel, string> > 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;
}

View file

@ -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;

View file

@ -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;