[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