From 75adf9e75ecef9ab55650d80c1b7224a75726a62 Mon Sep 17 00:00:00 2001
From: gabime <gmelman1@gmail.com>
Date: Tue, 27 Aug 2019 17:18:09 +0300
Subject: [PATCH] Improved test_sink in unit tests

---
 tests/test_sink.h | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/tests/test_sink.h b/tests/test_sink.h
index ae08e980..98484964 100644
--- a/tests/test_sink.h
+++ b/tests/test_sink.h
@@ -7,7 +7,7 @@
 
 #include "spdlog/details/null_mutex.h"
 #include "spdlog/sinks/base_sink.h"
-
+#include "spdlog/fmt/fmt.h"
 #include <chrono>
 #include <mutex>
 #include <thread>
@@ -36,20 +36,33 @@ public:
         delay_ = delay;
     }
 
+	// return last output without the eol
+	std::string last_output()
+	{
+		std::lock_guard<Mutex> lock(base_sink<Mutex>::mutex_);
+		auto eol_len = strlen(spdlog::details::os::default_eol);
+		return std::string(last_output_.begin(),  last_output_.end() - eol_len);
+	}
+
 protected:
-    void sink_it_(const details::log_msg &) override
-    {
-        msg_counter_++;
-        std::this_thread::sleep_for(delay_);
+    void sink_it_(const details::log_msg &msg) override
+    {        	
+		fmt::memory_buffer formatted;
+	    base_sink<Mutex>::formatter_->format(msg, formatted);
+		last_output_.assign(formatted.begin(), formatted.end());
+		msg_counter_++;
+        std::this_thread::sleep_for(delay_);		
     }
 
     void flush_() override
     {
         flush_counter_++;
     }
+	
     size_t msg_counter_{0};
     size_t flush_counter_{0};
     std::chrono::milliseconds delay_{std::chrono::milliseconds::zero()};
+	std::string last_output_;
 };
 
 using test_sink_mt = test_sink<std::mutex>;