mock_logger.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 <sstream>
  11. #include "logger/detail/appender.h"
  12. #include "logger/detail/layout.h"
  13. #include "logger/logpacket.h"
  14. namespace logging {
  15. inline void PrintTo(location_info const & info, std::ostream * os) {
  16. if (info.line) {
  17. (*os) << "{\"" << info.filename << "\", \"" << info.function << "\", "
  18. << info.line << "}";
  19. } else {
  20. (*os) << "NULL";
  21. }
  22. }
  23. inline void PrintTo(logpacket const & pkt, std::ostream * os) {
  24. (*os) << "{ " << pkt.level << ", ";
  25. PrintTo(pkt.info, os);
  26. (*os) << ", \"" << pkt.logger << "\", \"" << pkt.message.str() << "\" }";
  27. }
  28. }
  29. struct StubAppender : public logging::appender {
  30. StubAppender() : threshold(logging::level::trace) {}
  31. std::ostream & stream() override { return sstream; }
  32. void flush() override {}
  33. void write(logging::logpacket const & pkt, logging::layout & lay) override {
  34. lay.format(sstream, pkt);
  35. }
  36. bool should_log(logging::level ll) const override { return ll >= threshold; }
  37. logging::level threshold;
  38. std::stringstream sstream;
  39. };
  40. struct MockAppender : public StubAppender {
  41. MockAppender() {}
  42. MOCK_METHOD0(flush, void());
  43. MOCK_METHOD2(write, void(logging::logpacket const &, logging::layout &));
  44. };
  45. struct MockLayout : public logging::layout {
  46. MOCK_CONST_METHOD2(format, void(std::ostream &, logging::logpacket const &));
  47. };
  48. struct StubLayout : public logging::layout {
  49. void format(std::ostream & os, logging::logpacket const & pkt) const {
  50. os << pkt.message.str();
  51. }
  52. };
  53. ACTION(LogMessage) { arg0 << arg1.message.str(); }
  54. MATCHER_P(MessageEq, value, "") { return arg.message.str() == value; }
  55. #endif /* mock_logger_h */