Bladeren bron

Test header and footer for PatternLayout

Sam Jaffe 6 jaren geleden
bovenliggende
commit
e61bee67c7
1 gewijzigde bestanden met toevoegingen van 65 en 0 verwijderingen
  1. 65 0
      test/pattern_layout_test.cxx

+ 65 - 0
test/pattern_layout_test.cxx

@@ -170,3 +170,68 @@ TEST(PatternLayoutTest, TokenCanBeSizeBound) {
   EXPECT_THAT(DoFormat("%6.8m", getpkt("HELLO FRIEND")),
               Eq("HELLO FR"));
 }
+
+#include "mock_logger.h"
+#include "logger/logger.h"
+
+using namespace logging;
+using namespace logging::property;
+properties const schema{_obj({
+  {"configuration", _obj({
+    {"appenders", _obj({
+      {"Stub", _obj({
+        {"PatternLayout", _obj({
+          {"pattern", _v("%m")},
+          {"header", _v("HEADER-")},
+          {"footer", _v("-FOOTER")}
+        })}
+      })}
+    })},
+    {"loggers", _obj({
+      {"root", _obj({{"appenders", _obj({{"ref", _v("Stub")}})}})}
+    })}
+  })}
+})};
+
+class HeaderFooterTest : public testing::Test {
+protected:
+  void SetUp() override;
+  void TearDown() override;
+protected:
+  std::shared_ptr<StubAppender> appender;
+private:
+  appenders::scoped_binding abinding_;
+};
+
+void HeaderFooterTest::SetUp() {
+  appender = std::make_shared<StubAppender>();
+  auto GetStub = [this](properties const &) { return appender; };
+  abinding_ = appenders::instance().bind_scoped("Stub", GetStub);
+}
+
+void HeaderFooterTest::TearDown() {
+  abinding_.reset();
+  appender.reset();
+}
+
+using PatternLayoutHeaderTest = HeaderFooterTest;
+
+TEST_F(PatternLayoutHeaderTest, ProvidesHeader) {
+  manager mgr;
+  mgr.configure(schema);
+  using testing::Eq;
+  EXPECT_THAT(appender->sstream.str(), Eq("HEADER-"));
+  mgr.get().log(level::error, "HELLO");
+  EXPECT_THAT(appender->sstream.str(), Eq("HEADER-HELLO"));
+}
+
+TEST_F(PatternLayoutHeaderTest, ProvidesFooter) {
+  using testing::Eq;
+  {
+    manager mgr;
+    mgr.configure(schema);
+    appender->sstream.str("");
+    mgr.get().log(level::error, "HELLO");
+  }
+  EXPECT_THAT(appender->sstream.str(), Eq("HELLO-FOOTER"));
+}