[Orxonox-commit 4868] r9537 - in code/branches/testing: src/libraries/util/output test/util/output

landauf at orxonox.net landauf at orxonox.net
Mon Mar 4 23:23:57 CET 2013


Author: landauf
Date: 2013-03-04 23:23:57 +0100 (Mon, 04 Mar 2013)
New Revision: 9537

Modified:
   code/branches/testing/src/libraries/util/output/ConsoleWriter.cc
   code/branches/testing/src/libraries/util/output/ConsoleWriter.h
   code/branches/testing/src/libraries/util/output/OutputManager.cc
   code/branches/testing/test/util/output/ConsoleWriterTest.cc
Log:
ConsoleWriter now accepts and writes to any std::ostream, not just std::cout. Makes it easier to test.

Modified: code/branches/testing/src/libraries/util/output/ConsoleWriter.cc
===================================================================
--- code/branches/testing/src/libraries/util/output/ConsoleWriter.cc	2013-03-04 21:47:26 UTC (rev 9536)
+++ code/branches/testing/src/libraries/util/output/ConsoleWriter.cc	2013-03-04 22:23:57 UTC (rev 9537)
@@ -33,7 +33,6 @@
 
 #include "ConsoleWriter.h"
 
-#include <iostream>
 
 #include "OutputManager.h"
 
@@ -47,7 +46,7 @@
 
         After creation, the instance is enabled.
     */
-    ConsoleWriter::ConsoleWriter() : BaseWriter("Console")
+    ConsoleWriter::ConsoleWriter(std::ostream& outputStream) : BaseWriter("Console"), outputStream_(outputStream)
     {
 #ifdef ORXONOX_RELEASE
         this->setLevelMax(level::user_info);
@@ -69,7 +68,7 @@
     */
     void ConsoleWriter::printLine(const std::string& line, OutputLevel)
     {
-        std::cout << line << std::endl;
+        this->outputStream_ << line << std::endl;
     }
 
     /**

Modified: code/branches/testing/src/libraries/util/output/ConsoleWriter.h
===================================================================
--- code/branches/testing/src/libraries/util/output/ConsoleWriter.h	2013-03-04 21:47:26 UTC (rev 9536)
+++ code/branches/testing/src/libraries/util/output/ConsoleWriter.h	2013-03-04 22:23:57 UTC (rev 9537)
@@ -36,6 +36,9 @@
 #define _ConsoleWriter_H__
 
 #include "util/UtilPrereqs.h"
+
+#include <ostream>
+
 #include "BaseWriter.h"
 
 namespace orxonox
@@ -49,18 +52,22 @@
     class _UtilExport ConsoleWriter : public BaseWriter
     {
         public:
-            ConsoleWriter();
+            ConsoleWriter(std::ostream& outputStream);
             ConsoleWriter(const ConsoleWriter&);
             virtual ~ConsoleWriter();
 
             void enable();
             void disable();
 
+            inline const std::ostream& getOutputStream() const
+                { return this->outputStream_; }
+
         protected:
             virtual void printLine(const std::string& line, OutputLevel level);
 
         private:
-            bool bEnabled_; ///< If false, the instance will not write output to the console.
+            std::ostream& outputStream_; ///< The ostream to which the console writer writes its output
+            bool bEnabled_;              ///< If false, the instance will not write output to the console.
     };
 }
 

Modified: code/branches/testing/src/libraries/util/output/OutputManager.cc
===================================================================
--- code/branches/testing/src/libraries/util/output/OutputManager.cc	2013-03-04 21:47:26 UTC (rev 9536)
+++ code/branches/testing/src/libraries/util/output/OutputManager.cc	2013-03-04 22:23:57 UTC (rev 9537)
@@ -33,6 +33,8 @@
 
 #include "OutputManager.h"
 
+#include <iostream>
+
 #include "MemoryWriter.h"
 #include "ConsoleWriter.h"
 #include "LogWriter.h"
@@ -110,7 +112,7 @@
      */
     ConsoleWriter& OutputManager::getConsoleWriter()
     {
-        static ConsoleWriter instance;
+        static ConsoleWriter instance(std::cout);
         return instance;
     }
 

Modified: code/branches/testing/test/util/output/ConsoleWriterTest.cc
===================================================================
--- code/branches/testing/test/util/output/ConsoleWriterTest.cc	2013-03-04 21:47:26 UTC (rev 9536)
+++ code/branches/testing/test/util/output/ConsoleWriterTest.cc	2013-03-04 22:23:57 UTC (rev 9537)
@@ -7,8 +7,9 @@
 {
     TEST(ConsoleWriterTest, Disable)
     {
+        std::ostream stream(NULL);
         EXPECT_EQ(0U, OutputManager::getInstance().getListeners().size());
-        ConsoleWriter writer;
+        ConsoleWriter writer(stream);
         EXPECT_EQ(1U, OutputManager::getInstance().getListeners().size());
         writer.disable();
         EXPECT_EQ(0U, OutputManager::getInstance().getListeners().size());
@@ -16,10 +17,46 @@
 
     TEST(ConsoleWriterTest, Enable)
     {
-        ConsoleWriter writer;
+        std::ostream stream(NULL);
+        ConsoleWriter writer(stream);
         writer.disable();
         EXPECT_EQ(0U, OutputManager::getInstance().getListeners().size());
         writer.enable();
         EXPECT_EQ(1U, OutputManager::getInstance().getListeners().size());
     }
+
+    TEST(ConsoleWriterTest, WritesNoOutputToOutputStream)
+    {
+        std::stringbuf buffer;
+        std::ostream stream(&buffer);
+        ConsoleWriter writer(stream);
+        writer.setLevelMax(level::verbose);
+
+        EXPECT_EQ(0, buffer.in_avail());
+        EXPECT_EQ("", buffer.str());
+    }
+
+    TEST(ConsoleWriterTest, WritesOutputToOutputStream)
+    {
+        std::stringbuf buffer;
+        std::ostream stream(&buffer);
+        ConsoleWriter writer(stream);
+        writer.setLevelMax(level::verbose);
+
+        std::vector<std::string> lines;
+        lines.push_back("test");
+
+        EXPECT_TRUE(writer.acceptsOutput(level::debug_output, context::undefined()));
+
+        writer.unfilteredOutput(level::debug_output, context::undefined(), lines);
+
+        EXPECT_LT(0, buffer.in_avail());
+        EXPECT_NE("", buffer.str());
+        EXPECT_NE(std::string::npos, buffer.str().find("test"));
+    }
+
+    TEST(ConsoleWriterTest, DefaultConsoleWriterUsesCout)
+    {
+        EXPECT_EQ(std::cout, OutputManager::getInstance().getConsoleWriter().getOutputStream());
+    }
 }




More information about the Orxonox-commit mailing list