|
|
@@ -10,6 +10,8 @@
|
|
|
|
|
|
#include <gmock/gmock.h>
|
|
|
|
|
|
+#include <sstream>
|
|
|
+
|
|
|
#include "logger/detail/appender.h"
|
|
|
#include "logger/detail/layout.h"
|
|
|
#include "logger/detail/logger_impl.h"
|
|
|
@@ -36,15 +38,25 @@ struct MockAppender : public logging::appender {
|
|
|
MockAppender() { SetLogLevel(logging::level::trace); }
|
|
|
void SetLogLevel(logging::level ll) { min_log_level = ll; }
|
|
|
MOCK_METHOD0(flush, void());
|
|
|
- MOCK_METHOD1(write, void(std::string const &));
|
|
|
+ MOCK_METHOD1(write, void(logging::logpacket const &));
|
|
|
+};
|
|
|
+
|
|
|
+struct StubAppender : public logging::appender {
|
|
|
+ StubAppender() { SetLogLevel(logging::level::trace); }
|
|
|
+ void SetLogLevel(logging::level ll) { min_log_level = ll; }
|
|
|
+ void flush() override {}
|
|
|
+ void write(logging::logpacket const & pkt) override {
|
|
|
+ layout->format(stream, pkt);
|
|
|
+ }
|
|
|
+ std::stringstream stream;
|
|
|
};
|
|
|
|
|
|
struct MockLayout : public logging::layout {
|
|
|
- MOCK_CONST_METHOD1(format, std::string(logging::logpacket const &));
|
|
|
+ MOCK_CONST_METHOD2(format, void(std::ostream&, logging::logpacket const&));
|
|
|
};
|
|
|
|
|
|
-ACTION(ReturnMessage) {
|
|
|
- return arg0.message.str();
|
|
|
+ACTION(LogMessage) {
|
|
|
+ arg0 << arg1.message.str();
|
|
|
}
|
|
|
|
|
|
MATCHER_P(MessageEq, value, "") {
|
|
|
@@ -54,25 +66,21 @@ MATCHER_P(MessageEq, value, "") {
|
|
|
struct LoggerTest : public testing::Test {
|
|
|
void SetUp() override {
|
|
|
appender.reset(new MockAppender);
|
|
|
- layout.reset(new MockLayout);
|
|
|
pimpl = std::make_shared<logging::logger_impl>();
|
|
|
- pimpl->impls.push_back({appender, layout});
|
|
|
+ pimpl->impls.push_back(appender);
|
|
|
|
|
|
using testing::_;
|
|
|
using testing::AnyNumber;
|
|
|
|
|
|
EXPECT_CALL(*appender, write(_)).Times(AnyNumber());
|
|
|
EXPECT_CALL(*appender, flush()).Times(AnyNumber());
|
|
|
- ON_CALL(*layout, format(_)).WillByDefault(ReturnMessage());
|
|
|
}
|
|
|
void TearDown() override {
|
|
|
pimpl.reset();
|
|
|
- layout.reset();
|
|
|
appender.reset();
|
|
|
}
|
|
|
|
|
|
std::shared_ptr<MockAppender> appender;
|
|
|
- std::shared_ptr<MockLayout> layout;
|
|
|
std::shared_ptr<logging::logger_impl> pimpl;
|
|
|
};
|
|
|
|