mock_logger.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //
  2. // mock_logger.h
  3. // logger_test
  4. //
  5. // Created by Sam Jaffe on 4/2/19.
  6. //
  7. #ifndef mock_logger_h
  8. #define mock_logger_h
  9. #include <gmock/gmock.h>
  10. #include "logger/detail/appender.h"
  11. #include "logger/detail/layout.h"
  12. #include "logger/detail/logger_impl.h"
  13. namespace logging {
  14. inline void PrintTo(location_info const & info, std::ostream * os) {
  15. if (info.line) {
  16. (*os) << "{\"" << info.filename << "\", \"" <<
  17. info.function << "\", " << info.line << "}";
  18. } else {
  19. (*os) << "NULL";
  20. }
  21. }
  22. inline void PrintTo(logpacket const & pkt, std::ostream * os) {
  23. (*os) << "{ " << pkt.level << ", ";
  24. PrintTo(pkt.info, os);
  25. (*os) << ", \"" << pkt.logger << "\", \"" << pkt.message << "\" }";
  26. }
  27. }
  28. struct MockAppender : public logging::appender {
  29. MockAppender() { SetLogLevel(logging::LTRACE); }
  30. void SetLogLevel(logging::log_level ll) { min_log_level = ll; }
  31. MOCK_METHOD0(flush, void());
  32. MOCK_METHOD1(write, void(std::string const &));
  33. };
  34. struct MockLayout : public logging::layout {
  35. MOCK_CONST_METHOD1(format, std::string(logging::logpacket const &));
  36. };
  37. ACTION(ReturnMessage) {
  38. return arg0.message;
  39. }
  40. struct LoggerTest : public testing::Test {
  41. void SetUp() override {
  42. appender.reset(new MockAppender);
  43. layout.reset(new MockLayout);
  44. pimpl = std::make_shared<logging::logger_impl>();
  45. pimpl->impls_.push_back({appender, layout});
  46. using testing::_;
  47. using testing::AnyNumber;
  48. EXPECT_CALL(*appender, write(_)).Times(AnyNumber());
  49. EXPECT_CALL(*appender, flush()).Times(AnyNumber());
  50. ON_CALL(*layout, format(_)).WillByDefault(ReturnMessage());
  51. }
  52. void TearDown() override {
  53. pimpl.reset();
  54. layout.reset();
  55. appender.reset();
  56. }
  57. std::shared_ptr<MockAppender> appender;
  58. std::shared_ptr<MockLayout> layout;
  59. std::shared_ptr<logging::logger_impl> pimpl;
  60. };
  61. #endif /* mock_logger_h */