log_manager_test.cxx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // log_manager_test.cxx
  3. // logger_test
  4. //
  5. // Created by Sam Jaffe on 4/2/19.
  6. //
  7. #include "../../../types/resource_factory/include/resource_factory/prototype_factory.hpp"
  8. #include "logger/c_logger.h"
  9. #include "logger/detail/logger_impl.h"
  10. #include "logger/log_manager.h"
  11. #include "logger/properties.h"
  12. #include "mock_logger.h"
  13. using namespace logging;
  14. class LogManagerTest : public ::testing::Test {
  15. public:
  16. void SetUp() override;
  17. void TearDown() override;
  18. protected:
  19. std::shared_ptr<MockLoggerImpl> logger;
  20. private:
  21. impl_factory::scoped_binding binding_;
  22. };
  23. void LogManagerTest::SetUp() {
  24. auto GetMock = [this](properties const &) {
  25. return logger = std::make_shared<MockLoggerImpl>();
  26. };
  27. binding_ = impl_factory::instance().bind_scoped("Mock", GetMock);
  28. }
  29. void LogManagerTest::TearDown() {
  30. binding_.reset();
  31. }
  32. extern properties const MIN_PROPERTY_SCHEMA;
  33. extern properties const MULTIPLEX_PROPERTY_SCHEMA;
  34. TEST_F(LogManagerTest, CanInjectMock) {
  35. manager().configure(MIN_PROPERTY_SCHEMA);
  36. using ::testing::NotNull;
  37. EXPECT_THAT(logger, ::testing::NotNull());
  38. }
  39. TEST_F(LogManagerTest, CanFetchInjectedMock) {
  40. manager mgr;
  41. mgr.configure(MIN_PROPERTY_SCHEMA);
  42. using ::testing::_;
  43. using ::testing::AnyNumber;
  44. using ::testing::Field;
  45. EXPECT_CALL(*logger, flush()).Times(AnyNumber());
  46. EXPECT_CALL(*logger, write(Field(&logpacket::message, "TEST MESSAGE")));
  47. c_logger l = mgr.c_get();
  48. l.error("TEST MESSAGE");
  49. }
  50. TEST_F(LogManagerTest, MultiplexMockLogsToMultipleImpls) {
  51. manager mgr;
  52. mgr.configure(MULTIPLEX_PROPERTY_SCHEMA);
  53. using ::testing::_;
  54. using ::testing::AnyNumber;
  55. using ::testing::Field;
  56. EXPECT_CALL(*logger, flush()).Times(AnyNumber());
  57. EXPECT_CALL(*logger, write(Field(&logpacket::message, "TEST MESSAGE"))).Times(2);
  58. c_logger l = mgr.c_get();
  59. l.error("TEST MESSAGE");
  60. }