logger_test.cxx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. //
  2. // logger_test.cxx
  3. // logger
  4. //
  5. // Created by Sam Jaffe on 3/31/19.
  6. //
  7. #include <gmock/gmock.h>
  8. #include "logger/logger.hpp"
  9. struct MockLoggerImpl : public logging::logger_impl {
  10. MOCK_METHOD0(flush, void());
  11. MOCK_METHOD1(write, void(logging::logpacket const &));
  12. };
  13. struct LoggerTest : public testing::Test {
  14. static void SetUpTestCase();
  15. static void TearDownTestCase();
  16. void SetUp() override;
  17. void TearDown() override;
  18. static std::unique_ptr<MockLoggerImpl> pimpl;
  19. };
  20. std::unique_ptr<MockLoggerImpl> LoggerTest::pimpl{};
  21. using namespace logging;
  22. void LoggerTest::SetUpTestCase() {
  23. _binding bind([]() -> logger_impl& {
  24. return *pimpl;
  25. });
  26. bind_logger_impl(bind);
  27. }
  28. void LoggerTest::SetUp() {
  29. pimpl.reset(new MockLoggerImpl);
  30. }
  31. void LoggerTest::TearDown() {
  32. pimpl.reset();
  33. }
  34. TEST_F(LoggerTest, ImplCannotBeMadeTwice) {
  35. EXPECT_ANY_THROW(bind_logger_impl(nullptr));
  36. }
  37. TEST_F(LoggerTest, LogsWithBraceFmtCode) {
  38. using testing::Field;
  39. EXPECT_CALL(*pimpl, write(Field(&logpacket::message, "5"))).Times(1);
  40. logger & LOG = logger::instance( );
  41. LOG.log(LERROR, "{}", 5);
  42. }