| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //
- // mock_logger.h
- // logger_test
- //
- // Created by Sam Jaffe on 4/2/19.
- //
- #ifndef mock_logger_h
- #define mock_logger_h
- #include <gmock/gmock.h>
- #include "logger/detail/appender.h"
- #include "logger/detail/layout.h"
- #include "logger/detail/logger_impl.h"
- #include "logger/logpacket.h"
- namespace logging {
- inline void PrintTo(location_info const & info, std::ostream * os) {
- if (info.line) {
- (*os) << "{\"" << info.filename << "\", \"" <<
- info.function << "\", " << info.line << "}";
- } else {
- (*os) << "NULL";
- }
- }
-
- inline void PrintTo(logpacket const & pkt, std::ostream * os) {
- (*os) << "{ " << pkt.level << ", ";
- PrintTo(pkt.info, os);
- (*os) << ", \"" << pkt.logger << "\", \"" << pkt.message.str() << "\" }";
- }
- }
- 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 &));
- };
- struct MockLayout : public logging::layout {
- MOCK_CONST_METHOD1(format, std::string(logging::logpacket const &));
- };
- ACTION(ReturnMessage) {
- return arg0.message.str();
- }
- MATCHER_P(MessageEq, value, "") {
- return arg.message.str() == 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});
-
- 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;
- };
- #endif /* mock_logger_h */
|