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

landauf at orxonox.net landauf at orxonox.net
Sat Feb 23 23:39:24 CET 2013


Author: landauf
Date: 2013-02-23 23:39:22 +0100 (Sat, 23 Feb 2013)
New Revision: 9529

Added:
   code/branches/testing/test/util/OutputTest.cc
   code/branches/testing/test/util/output/
   code/branches/testing/test/util/output/BaseWriterTest.cc
   code/branches/testing/test/util/output/ConsoleWriterTest.cc
   code/branches/testing/test/util/output/LogWriterTest.cc
   code/branches/testing/test/util/output/MemoryWriterTest.cc
   code/branches/testing/test/util/output/OutputDefinitionsTest.cc
   code/branches/testing/test/util/output/OutputListenerTest.cc
   code/branches/testing/test/util/output/OutputManagerTest.cc
   code/branches/testing/test/util/output/OutputStreamTest.cc
   code/branches/testing/test/util/output/SubcontextOutputListenerTest.cc
Modified:
   code/branches/testing/src/libraries/util/output/OutputStream.h
   code/branches/testing/test/util/CMakeLists.txt
Log:
started implementing unit tests for the output system

Modified: code/branches/testing/src/libraries/util/output/OutputStream.h
===================================================================
--- code/branches/testing/src/libraries/util/output/OutputStream.h	2013-02-19 10:12:52 UTC (rev 9528)
+++ code/branches/testing/src/libraries/util/output/OutputStream.h	2013-02-23 22:39:22 UTC (rev 9529)
@@ -101,6 +101,9 @@
                 return *this;
             }
 
+            inline const OutputLevel getOutputLevel() const { return this->level_; }
+            inline const OutputContextContainer* getOutputContext() const { return this->context_; }
+
         private:
             /// @brief Generic function to add values to the output stream, using the inherited << operator from std::ostringstream.
             template <class T>

Modified: code/branches/testing/test/util/CMakeLists.txt
===================================================================
--- code/branches/testing/test/util/CMakeLists.txt	2013-02-19 10:12:52 UTC (rev 9528)
+++ code/branches/testing/test/util/CMakeLists.txt	2013-02-23 22:39:22 UTC (rev 9529)
@@ -11,6 +11,7 @@
     MathTest.cc
     mboolTest.cc
     MultiTypeTest.cc
+    OutputTest.cc
     ScopeTest.cc
     SharedPtrTest.cc
     SingletonTest.cc
@@ -18,6 +19,16 @@
     StringUtilsTest.cc
     SubStringTest.cc
     VA_NARGSTest.cc
+
+    output/BaseWriterTest.cc
+    output/ConsoleWriterTest.cc
+    output/LogWriterTest.cc
+    output/MemoryWriterTest.cc
+    output/OutputDefinitionsTest.cc
+    output/OutputListenerTest.cc
+    output/OutputManagerTest.cc
+    output/OutputStreamTest.cc
+    output/SubcontextOutputListenerTest.cc
 )
 ADD_DEPENDENCIES(test util_test)
 

Added: code/branches/testing/test/util/OutputTest.cc
===================================================================
--- code/branches/testing/test/util/OutputTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/OutputTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,49 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+    namespace context
+    {
+        namespace
+        {
+            REGISTER_OUTPUT_CONTEXT(unittest);
+        }
+    }
+
+    TEST(Output, CanUseOrxout)
+    {
+        orxout() << "test" << endl;
+    }
+
+    TEST(Output, OrxoutUsesCorrectOutputLevel)
+    {
+        {
+            const OutputStream& stream = orxout(internal_warning);
+            EXPECT_EQ(internal_warning, stream.getOutputLevel());
+        }
+
+        {
+            const OutputStream& stream = orxout(debug_output);
+            EXPECT_EQ(debug_output, stream.getOutputLevel());
+        }
+    }
+
+    TEST(Output, OrxoutUsesCorrectOutputContext)
+    {
+        const OutputStream& stream = orxout(verbose, context::unittest());
+        EXPECT_EQ(verbose, stream.getOutputLevel());
+        EXPECT_EQ(context::unittest().mask, stream.getOutputContext()->mask);
+        EXPECT_EQ(context::unittest().name, stream.getOutputContext()->name);
+        EXPECT_EQ(context::unittest().sub_id, stream.getOutputContext()->sub_id);
+    }
+
+    TEST(Output, OrxoutAcceptsFunctionPointer)
+    {
+        const OutputStream& stream = orxout(verbose, context::unittest);
+        EXPECT_EQ(verbose, stream.getOutputLevel());
+        EXPECT_EQ(context::unittest().mask, stream.getOutputContext()->mask);
+        EXPECT_EQ(context::unittest().name, stream.getOutputContext()->name);
+        EXPECT_EQ(context::unittest().sub_id, stream.getOutputContext()->sub_id);
+    }
+}

Added: code/branches/testing/test/util/output/BaseWriterTest.cc
===================================================================
--- code/branches/testing/test/util/output/BaseWriterTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/BaseWriterTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}

Added: code/branches/testing/test/util/output/ConsoleWriterTest.cc
===================================================================
--- code/branches/testing/test/util/output/ConsoleWriterTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/ConsoleWriterTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}

Added: code/branches/testing/test/util/output/LogWriterTest.cc
===================================================================
--- code/branches/testing/test/util/output/LogWriterTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/LogWriterTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}

Added: code/branches/testing/test/util/output/MemoryWriterTest.cc
===================================================================
--- code/branches/testing/test/util/output/MemoryWriterTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/MemoryWriterTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}

Added: code/branches/testing/test/util/output/OutputDefinitionsTest.cc
===================================================================
--- code/branches/testing/test/util/output/OutputDefinitionsTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/OutputDefinitionsTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,10 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+    TEST(OutputDefinitions, Levels)
+    {
+        EXPECT_EQ(0x0000, level::none);
+    }
+}

Added: code/branches/testing/test/util/output/OutputListenerTest.cc
===================================================================
--- code/branches/testing/test/util/output/OutputListenerTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/OutputListenerTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,157 @@
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+#include "util/output/OutputListener.h"
+
+namespace orxonox
+{
+    namespace context
+    {
+        namespace
+        {
+            REGISTER_OUTPUT_CONTEXT(unittest1);
+            REGISTER_OUTPUT_CONTEXT(unittest2);
+            REGISTER_OUTPUT_CONTEXT(unittest3);
+        }
+    }
+
+    namespace
+    {
+        class MockOutputListener : public OutputListener
+        {
+            public:
+                MOCK_METHOD3(output, void(OutputLevel, const OutputContextContainer&, const std::vector<std::string>&));
+        };
+    }
+
+    // test default settings
+    TEST(OutputListener, DefaultConstructorAcceptsNothing)
+    {
+        MockOutputListener listener;
+
+        EXPECT_EQ(level::none, listener.getLevelMask());
+        EXPECT_EQ(level::none, listener.getAdditionalContextsLevelMask());
+        EXPECT_EQ(context::none, listener.getAdditionalContextsMask());
+    }
+
+    // test setLevelMax
+    TEST(OutputListener, TestSetLevelMax)
+    {
+        MockOutputListener listener;
+
+        listener.setLevelMax(level::user_warning);
+
+        OutputLevel mask = listener.getLevelMask();
+
+        EXPECT_FALSE(mask & level::none);
+        EXPECT_TRUE(mask & level::message);
+        EXPECT_TRUE(mask & level::debug_output);
+        EXPECT_TRUE(mask & level::user_error);
+        EXPECT_TRUE(mask & level::user_warning);
+        EXPECT_FALSE(mask & level::user_status);
+    }
+
+    // test setLevelRange
+    TEST(OutputListener, TestSetLevelRange)
+    {
+        MockOutputListener listener;
+
+        listener.setLevelRange(level::debug_output, level::user_warning);
+
+        OutputLevel mask = listener.getLevelMask();
+
+        EXPECT_FALSE(mask & level::none);
+        EXPECT_FALSE(mask & level::message);
+        EXPECT_TRUE(mask & level::debug_output);
+        EXPECT_TRUE(mask & level::user_error);
+        EXPECT_TRUE(mask & level::user_warning);
+        EXPECT_FALSE(mask & level::user_status);
+    }
+
+    // test setLevelMask
+    TEST(OutputListener, TestSetLevelMask)
+    {
+        MockOutputListener listener;
+
+        listener.setLevelMask(static_cast<OutputLevel>(level::debug_output | level::user_warning));
+
+        OutputLevel mask = listener.getLevelMask();
+
+        EXPECT_FALSE(mask & level::none);
+        EXPECT_FALSE(mask & level::message);
+        EXPECT_TRUE(mask & level::debug_output);
+        EXPECT_FALSE(mask & level::user_error);
+        EXPECT_TRUE(mask & level::user_warning);
+        EXPECT_FALSE(mask & level::user_status);
+    }
+
+    // test setAdditionalContextsLevelMax
+    TEST(OutputListener, TestSetAdditionalContextsLevelMax)
+    {
+        MockOutputListener listener;
+
+        listener.setAdditionalContextsLevelMax(level::user_warning);
+
+        OutputLevel mask = listener.getAdditionalContextsLevelMask();
+
+        EXPECT_FALSE(mask & level::none);
+        EXPECT_TRUE(mask & level::message);
+        EXPECT_TRUE(mask & level::debug_output);
+        EXPECT_TRUE(mask & level::user_error);
+        EXPECT_TRUE(mask & level::user_warning);
+        EXPECT_FALSE(mask & level::user_status);
+    }
+
+    // test setAdditionalContextsLevelRange
+    TEST(OutputListener, TestSetAdditionalContextsLevelRange)
+    {
+        MockOutputListener listener;
+
+        listener.setAdditionalContextsLevelRange(level::debug_output, level::user_warning);
+
+        OutputLevel mask = listener.getAdditionalContextsLevelMask();
+
+        EXPECT_FALSE(mask & level::none);
+        EXPECT_FALSE(mask & level::message);
+        EXPECT_TRUE(mask & level::debug_output);
+        EXPECT_TRUE(mask & level::user_error);
+        EXPECT_TRUE(mask & level::user_warning);
+        EXPECT_FALSE(mask & level::user_status);
+    }
+
+    // test setAdditionalContextsLevelMask
+    TEST(OutputListener, TestSetAdditionalContextsLevelMask)
+    {
+        MockOutputListener listener;
+
+        listener.setAdditionalContextsLevelMask(static_cast<OutputLevel>(level::debug_output | level::user_warning));
+
+        OutputLevel mask = listener.getAdditionalContextsLevelMask();
+
+        EXPECT_FALSE(mask & level::none);
+        EXPECT_FALSE(mask & level::message);
+        EXPECT_TRUE(mask & level::debug_output);
+        EXPECT_FALSE(mask & level::user_error);
+        EXPECT_TRUE(mask & level::user_warning);
+        EXPECT_FALSE(mask & level::user_status);
+    }
+
+    // test setAdditionalContextsMask
+    TEST(OutputListener, TestSetAdditionalContextsMask)
+    {
+        MockOutputListener listener;
+
+        listener.setAdditionalContextsMask(context::unittest1().mask | context::unittest3().mask);
+
+        OutputContextMask mask = listener.getAdditionalContextsMask();
+
+        EXPECT_TRUE(mask & context::unittest1().mask);
+        EXPECT_FALSE(mask & context::unittest2().mask);
+        EXPECT_TRUE(mask & context::unittest3().mask);
+    }
+
+    // test setAdditionalContextsLevelMask calls OutputManager::updateCombinedAdditionalContextsLevelMask
+    // test setAdditionalContextsMask calls OutputManager::updateCombinedAdditionalContextsMask
+
+    // test acceptsOutput
+    // test unfilteredOutput
+}

Added: code/branches/testing/test/util/output/OutputManagerTest.cc
===================================================================
--- code/branches/testing/test/util/output/OutputManagerTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/OutputManagerTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}

Added: code/branches/testing/test/util/output/OutputStreamTest.cc
===================================================================
--- code/branches/testing/test/util/output/OutputStreamTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/OutputStreamTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}

Added: code/branches/testing/test/util/output/SubcontextOutputListenerTest.cc
===================================================================
--- code/branches/testing/test/util/output/SubcontextOutputListenerTest.cc	                        (rev 0)
+++ code/branches/testing/test/util/output/SubcontextOutputListenerTest.cc	2013-02-23 22:39:22 UTC (rev 9529)
@@ -0,0 +1,6 @@
+#include <gtest/gtest.h>
+#include "util/Output.h"
+
+namespace orxonox
+{
+}




More information about the Orxonox-commit mailing list