|
|
@@ -0,0 +1,75 @@
|
|
|
+//
|
|
|
+// log_manager_test.cxx
|
|
|
+// logger_test
|
|
|
+//
|
|
|
+// Created by Sam Jaffe on 4/2/19.
|
|
|
+//
|
|
|
+
|
|
|
+#include "../../../types/resource_factory/include/resource_factory/prototype_factory.hpp"
|
|
|
+
|
|
|
+#include "logger/c_logger.h"
|
|
|
+#include "logger/log_manager.h"
|
|
|
+#include "logger/logger_impl.h"
|
|
|
+#include "logger/properties.h"
|
|
|
+
|
|
|
+#include "mock_logger.h"
|
|
|
+
|
|
|
+using namespace logging;
|
|
|
+
|
|
|
+class LogManagerTest : public ::testing::Test {
|
|
|
+public:
|
|
|
+ void SetUp() override;
|
|
|
+ void TearDown() override;
|
|
|
+protected:
|
|
|
+ std::shared_ptr<MockLoggerImpl> logger;
|
|
|
+private:
|
|
|
+ impl_factory::scoped_binding binding_;
|
|
|
+};
|
|
|
+
|
|
|
+void LogManagerTest::SetUp() {
|
|
|
+ auto GetMock = [this](properties const &) {
|
|
|
+ return logger = std::make_shared<MockLoggerImpl>();
|
|
|
+ };
|
|
|
+ binding_ = impl_factory::instance().bind_scoped("Mock", GetMock);
|
|
|
+}
|
|
|
+
|
|
|
+void LogManagerTest::TearDown() {
|
|
|
+ binding_.reset();
|
|
|
+}
|
|
|
+
|
|
|
+extern properties const MIN_PROPERTY_SCHEMA;
|
|
|
+extern properties const MULTIPLEX_PROPERTY_SCHEMA;
|
|
|
+
|
|
|
+TEST_F(LogManagerTest, CanInjectMock) {
|
|
|
+ manager().configure(MIN_PROPERTY_SCHEMA);
|
|
|
+
|
|
|
+ using ::testing::NotNull;
|
|
|
+
|
|
|
+ EXPECT_THAT(logger, ::testing::NotNull());
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(LogManagerTest, CanFetchInjectedMock) {
|
|
|
+ manager mgr;
|
|
|
+ mgr.configure(MIN_PROPERTY_SCHEMA);
|
|
|
+
|
|
|
+ using ::testing::_;
|
|
|
+ using ::testing::AnyNumber;
|
|
|
+ EXPECT_CALL(*logger, flush()).Times(AnyNumber());
|
|
|
+ EXPECT_CALL(*logger, write(_, "TEST MESSAGE"));
|
|
|
+
|
|
|
+ c_logger l = mgr.c_get();
|
|
|
+ l.error("TEST MESSAGE");
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(LogManagerTest, MultiplexMockLogsToMultipleImpls) {
|
|
|
+ manager mgr;
|
|
|
+ mgr.configure(MULTIPLEX_PROPERTY_SCHEMA);
|
|
|
+
|
|
|
+ using ::testing::_;
|
|
|
+ using ::testing::AnyNumber;
|
|
|
+ EXPECT_CALL(*logger, flush()).Times(AnyNumber());
|
|
|
+ EXPECT_CALL(*logger, write(_, "TEST MESSAGE")).Times(2);
|
|
|
+
|
|
|
+ c_logger l = mgr.c_get();
|
|
|
+ l.error("TEST MESSAGE");
|
|
|
+}
|