mock_logger.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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/logger_impl.h"
  11. namespace logging {
  12. inline void PrintTo(location_info const & info, std::ostream * os) {
  13. if (info.line) {
  14. (*os) << "{\"" << info.filename << "\", \"" <<
  15. info.function << "\", " << info.line << "}";
  16. } else {
  17. (*os) << "NULL";
  18. }
  19. }
  20. inline void PrintTo(logpacket const & pkt, std::ostream * os) {
  21. (*os) << "{ " << pkt.level << ", ";
  22. PrintTo(pkt.info, os);
  23. (*os) << ", \"" << pkt.logger << "\", \"" << pkt.message << "\" }";
  24. }
  25. }
  26. struct MockLoggerImpl : public logging::logger_impl {
  27. MockLoggerImpl() { SetLogLevel(logging::LTRACE); }
  28. void SetLogLevel(logging::log_level ll) { min_log_level = ll; }
  29. MOCK_METHOD0(flush, void());
  30. MOCK_METHOD1(write, void(logging::logpacket const &));
  31. };
  32. struct LoggerTest : public testing::Test {
  33. void SetUp() override {
  34. pimpl.reset(new MockLoggerImpl);
  35. using testing::AnyNumber;
  36. EXPECT_CALL(*pimpl, flush()).Times(AnyNumber());
  37. }
  38. void TearDown() override {
  39. pimpl.reset();
  40. }
  41. std::shared_ptr<MockLoggerImpl> pimpl;
  42. };
  43. #endif /* mock_logger_h */