Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 9534


Ignore:
Timestamp:
Mar 3, 2013, 8:25:53 PM (11 years ago)
Author:
landauf
Message:

added more tests

Location:
code/branches/testing
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • code/branches/testing

    • Property svn:ignore
      •  

        old new  
        33vs
        44dependencies
         5.metadata
         6eclipse
  • code/branches/testing/src/libraries/util/output/AdditionalContextListener.h

    r9531 r9534  
    5050    {
    5151        public:
     52            virtual ~AdditionalContextListener() {}
     53
    5254            virtual void updatedLevelMask(const OutputListener* listener) = 0;
    5355            virtual void updatedAdditionalContextsLevelMask(const OutputListener* listener) = 0;
  • code/branches/testing/src/libraries/util/output/OutputListener.h

    r9530 r9534  
    6666            void setAdditionalContextsLevelMask(OutputLevel mask);
    6767
    68             void setAdditionalContextsMask(OutputContextMask mask);
     68            virtual void setAdditionalContextsMask(OutputContextMask mask);
    6969
    7070            /// @brief Returns the level mask.
  • code/branches/testing/src/libraries/util/output/SubcontextOutputListener.h

    r8858 r9534  
    7373            virtual ~SubcontextOutputListener();
    7474
    75             void setAdditionalContextsMask(OutputContextMask mask);
     75            virtual void setAdditionalContextsMask(OutputContextMask mask);
    7676            void setAdditionalSubcontexts(const std::set<const OutputContextContainer*>& subcontexts);
    7777
  • code/branches/testing/test/util/output/OutputListenerTest.cc

    r9533 r9534  
    235235
    236236    // test acceptsOutput
     237    namespace
     238    {
     239        void testContext(const OutputListener& listener, const OutputContextContainer& context, bool accepted)
     240        {
     241            EXPECT_TRUE(listener.acceptsOutput(level::message, context));
     242            EXPECT_TRUE(listener.acceptsOutput(level::user_error, context));
     243            EXPECT_TRUE(listener.acceptsOutput(level::user_warning, context));
     244
     245            if (accepted)
     246            {
     247                EXPECT_TRUE(listener.acceptsOutput(level::user_status, context));
     248                EXPECT_TRUE(listener.acceptsOutput(level::internal_error, context));
     249                EXPECT_TRUE(listener.acceptsOutput(level::internal_info, context));
     250            }
     251            else
     252            {
     253                EXPECT_FALSE(listener.acceptsOutput(level::user_status, context));
     254                EXPECT_FALSE(listener.acceptsOutput(level::internal_error, context));
     255                EXPECT_FALSE(listener.acceptsOutput(level::internal_info, context));
     256            }
     257
     258            EXPECT_FALSE(listener.acceptsOutput(level::verbose, context));
     259            EXPECT_FALSE(listener.acceptsOutput(level::verbose_ultra, context));
     260        }
     261    }
     262
     263    TEST(OutputListenerTest, AcceptsOutputNoAdditionalContext)
     264    {
     265        MockOutputListener listener;
     266
     267        listener.setLevelMax(level::user_warning);
     268
     269        testContext(listener, context::undefined(), false);
     270        testContext(listener, context::unittest1(), false);
     271        testContext(listener, context::unittest2(), false);
     272    }
     273
     274    TEST(OutputListenerTest, AcceptsOutputWithAdditionalContext)
     275    {
     276        MockOutputListener listener;
     277
     278        listener.setLevelMax(level::user_warning);
     279        listener.setAdditionalContextsMask(context::unittest1().mask);
     280        listener.setAdditionalContextsLevelMax(level::internal_info);
     281
     282        testContext(listener, context::undefined(), false);
     283        testContext(listener, context::unittest1(), true);
     284        testContext(listener, context::unittest2(), false);
     285    }
     286
     287    TEST(OutputListenerTest, AcceptsOutputWithTwoAdditionalContexts)
     288    {
     289        MockOutputListener listener;
     290
     291        listener.setLevelMax(level::user_warning);
     292
     293        listener.setLevelMax(level::user_warning);
     294        listener.setAdditionalContextsMask(context::unittest1().mask | context::unittest2().mask);
     295        listener.setAdditionalContextsLevelMax(level::internal_info);
     296
     297        testContext(listener, context::undefined(), false);
     298        testContext(listener, context::unittest1(), true);
     299        testContext(listener, context::unittest2(), true);
     300    }
     301
    237302    // test unfilteredOutput
     303    TEST(OutputListenerTest, UnfilteredOutputCallsOutputIfOutputAccepted)
     304    {
     305        MockOutputListener listener;
     306
     307        listener.setLevelMax(level::user_warning);
     308
     309        const OutputLevel& level = level::message;
     310        const OutputContextContainer& context = context::undefined();
     311
     312        EXPECT_TRUE(listener.acceptsOutput(level, context));
     313
     314        std::vector<std::string> lines;
     315        EXPECT_CALL(listener, output(level, ::testing::_, lines)).Times(1);
     316
     317        listener.unfilteredOutput(level, context, lines);
     318    }
     319
     320    TEST(OutputListenerTest, UnfilteredOutputDoesNotCallOutputIfOutputNotAccepted)
     321    {
     322        MockOutputListener listener;
     323
     324        listener.setLevelMax(level::user_warning);
     325
     326        const OutputLevel& level = level::verbose;
     327        const OutputContextContainer& context = context::undefined();
     328
     329        EXPECT_FALSE(listener.acceptsOutput(level, context));
     330
     331        std::vector<std::string> lines;
     332        EXPECT_CALL(listener, output(level, ::testing::_, lines)).Times(0);
     333
     334        listener.unfilteredOutput(level, context, lines);
     335    }
    238336
    239337    // Fixture
  • code/branches/testing/test/util/output/SubcontextOutputListenerTest.cc

    r9529 r9534  
    11#include <gtest/gtest.h>
     2#include <gmock/gmock.h>
    23#include "util/Output.h"
     4#include "util/output/SubcontextOutputListener.h"
    35
    46namespace orxonox
    57{
     8    namespace context
     9    {
     10        namespace
     11        {
     12            REGISTER_OUTPUT_CONTEXT(unittest1);
     13            REGISTER_OUTPUT_CONTEXT(unittest2);
     14            REGISTER_OUTPUT_CONTEXT(unittest3);
     15
     16            REGISTER_OUTPUT_SUBCONTEXT(unittest3, sub1);
     17            REGISTER_OUTPUT_SUBCONTEXT(unittest3, sub2);
     18            REGISTER_OUTPUT_SUBCONTEXT(unittest3, sub3);
     19        }
     20    }
     21
     22    namespace
     23    {
     24        class MockSubcontextOutputListener : public SubcontextOutputListener
     25        {
     26            public:
     27                MockSubcontextOutputListener(bool bRegister = true) : SubcontextOutputListener(bRegister) {}
     28                MOCK_METHOD3(output, void(OutputLevel, const OutputContextContainer&, const std::vector<std::string>&));
     29        };
     30    }
     31
     32    TEST(SubcontextOutputListenerTest, ContextsDefinedCorrectly)
     33    {
     34        EXPECT_TRUE(context::unittest1().sub_id == context::no_subcontext);
     35        EXPECT_TRUE(context::unittest2().sub_id == context::no_subcontext);
     36        EXPECT_TRUE(context::unittest3().sub_id == context::no_subcontext);
     37        EXPECT_FALSE(context::sub1().sub_id == context::no_subcontext);
     38        EXPECT_FALSE(context::sub2().sub_id == context::no_subcontext);
     39        EXPECT_FALSE(context::sub3().sub_id == context::no_subcontext);
     40    }
     41
     42    // test setAdditionalContextsMask
     43    TEST(SubcontextOutputListenerTest, SetAdditionalContextsMask)
     44    {
     45        MockSubcontextOutputListener listener;
     46
     47        listener.setAdditionalContextsMask(context::unittest1().mask | context::unittest2().mask);
     48
     49        OutputContextMask mask = listener.getAdditionalContextsMask();
     50
     51        EXPECT_TRUE(mask & context::unittest1().mask);
     52        EXPECT_TRUE(mask & context::unittest2().mask);
     53        EXPECT_FALSE(mask & context::unittest3().mask);
     54    }
     55
     56    // test setAdditionalSubcontexts
     57    TEST(SubcontextOutputListenerTest, SetAdditionalSubcontexts)
     58    {
     59        MockSubcontextOutputListener listener;
     60
     61        std::set<const OutputContextContainer*> subcontexts;
     62        subcontexts.insert(&context::sub1());
     63        subcontexts.insert(&context::sub3());
     64
     65        listener.setAdditionalSubcontexts(subcontexts);
     66        OutputContextMask mask = listener.getAdditionalContextsMask();
     67
     68        EXPECT_FALSE(mask & context::unittest1().mask);
     69        EXPECT_FALSE(mask & context::unittest2().mask);
     70        EXPECT_TRUE(mask & context::unittest3().mask);
     71    }
     72
     73    // test setAdditionalContextsMask and setAdditionalSubcontexts
     74    TEST(SubcontextOutputListenerTest, SetAdditionalContextsAndSubcontexts)
     75    {
     76        MockSubcontextOutputListener listener;
     77
     78        std::set<const OutputContextContainer*> subcontexts;
     79        subcontexts.insert(&context::sub1());
     80        subcontexts.insert(&context::sub3());
     81
     82        listener.setAdditionalSubcontexts(subcontexts);
     83        listener.setAdditionalContextsMask(context::unittest1().mask | context::unittest2().mask);
     84
     85        OutputContextMask mask = listener.getAdditionalContextsMask();
     86
     87        EXPECT_TRUE(mask & context::unittest1().mask);
     88        EXPECT_TRUE(mask & context::unittest2().mask);
     89        EXPECT_TRUE(mask & context::unittest3().mask);
     90    }
     91
     92    // test acceptsOutput
     93    namespace
     94    {
     95        void testContext(const OutputListener& listener, const OutputContextContainer& context, bool accepted)
     96        {
     97            EXPECT_TRUE(accepted == listener.acceptsOutput(level::message, context));
     98            EXPECT_TRUE(accepted == listener.acceptsOutput(level::user_error, context));
     99            EXPECT_TRUE(accepted == listener.acceptsOutput(level::internal_info, context));
     100        }
     101    }
     102
     103    TEST(SubcontextOutputListenerTest, NoContext)
     104    {
     105        MockSubcontextOutputListener listener;
     106        listener.setAdditionalContextsLevelMax(level::verbose);
     107
     108        testContext(listener, context::unittest1(), false);
     109        testContext(listener, context::unittest2(), false);
     110        testContext(listener, context::unittest3(), false);
     111        testContext(listener, context::sub1(), false);
     112        testContext(listener, context::sub2(), false);
     113        testContext(listener, context::sub3(), false);
     114    }
     115
     116    TEST(SubcontextOutputListenerTest, OneContext)
     117    {
     118        MockSubcontextOutputListener listener;
     119        listener.setAdditionalContextsLevelMax(level::verbose);
     120
     121        listener.setAdditionalContextsMask(context::unittest1().mask);
     122
     123        testContext(listener, context::unittest1(), true);
     124        testContext(listener, context::unittest2(), false);
     125        testContext(listener, context::unittest3(), false);
     126        testContext(listener, context::sub1(), false);
     127        testContext(listener, context::sub2(), false);
     128        testContext(listener, context::sub3(), false);
     129    }
     130
     131    TEST(SubcontextOutputListenerTest, TwoContexts)
     132    {
     133        MockSubcontextOutputListener listener;
     134        listener.setAdditionalContextsLevelMax(level::verbose);
     135
     136        listener.setAdditionalContextsMask(context::unittest1().mask | context::unittest2().mask);
     137
     138        testContext(listener, context::unittest1(), true);
     139        testContext(listener, context::unittest2(), true);
     140        testContext(listener, context::unittest3(), false);
     141        testContext(listener, context::sub1(), false);
     142        testContext(listener, context::sub2(), false);
     143        testContext(listener, context::sub3(), false);
     144    }
     145
     146    TEST(SubcontextOutputListenerTest, OneSubcontext)
     147    {
     148        MockSubcontextOutputListener listener;
     149        listener.setAdditionalContextsLevelMax(level::verbose);
     150
     151        std::set<const OutputContextContainer*> subcontexts;
     152        subcontexts.insert(&context::sub1());
     153
     154        listener.setAdditionalSubcontexts(subcontexts);
     155
     156        testContext(listener, context::unittest1(), false);
     157        testContext(listener, context::unittest2(), false);
     158        testContext(listener, context::unittest3(), false);
     159        testContext(listener, context::sub1(), true);
     160        testContext(listener, context::sub2(), false);
     161        testContext(listener, context::sub3(), false);
     162    }
     163
     164    TEST(SubcontextOutputListenerTest, TwoSubcontexts)
     165    {
     166        MockSubcontextOutputListener listener;
     167        listener.setAdditionalContextsLevelMax(level::verbose);
     168
     169        std::set<const OutputContextContainer*> subcontexts;
     170        subcontexts.insert(&context::sub1());
     171        subcontexts.insert(&context::sub3());
     172
     173        listener.setAdditionalSubcontexts(subcontexts);
     174
     175        testContext(listener, context::unittest1(), false);
     176        testContext(listener, context::unittest2(), false);
     177        testContext(listener, context::unittest3(), false);
     178        testContext(listener, context::sub1(), true);
     179        testContext(listener, context::sub2(), false);
     180        testContext(listener, context::sub3(), true);
     181    }
     182
     183    TEST(SubcontextOutputListenerTest, ContextsAndSubcontexts)
     184    {
     185        MockSubcontextOutputListener listener;
     186        listener.setAdditionalContextsLevelMax(level::verbose);
     187
     188        std::set<const OutputContextContainer*> subcontexts;
     189        subcontexts.insert(&context::sub1());
     190        subcontexts.insert(&context::sub3());
     191
     192        listener.setAdditionalContextsMask(context::unittest1().mask | context::unittest2().mask);
     193        listener.setAdditionalSubcontexts(subcontexts);
     194
     195        testContext(listener, context::unittest1(), true);
     196        testContext(listener, context::unittest2(), true);
     197        testContext(listener, context::unittest3(), false);
     198        testContext(listener, context::sub1(), true);
     199        testContext(listener, context::sub2(), false);
     200        testContext(listener, context::sub3(), true);
     201    }
     202
     203    TEST(SubcontextOutputListenerTest, BaseContextEnablesAllSubcontexts)
     204    {
     205        MockSubcontextOutputListener listener;
     206        listener.setAdditionalContextsLevelMax(level::verbose);
     207
     208        listener.setAdditionalContextsMask(context::unittest3().mask);
     209
     210        testContext(listener, context::unittest1(), false);
     211        testContext(listener, context::unittest2(), false);
     212        testContext(listener, context::unittest3(), true);
     213        testContext(listener, context::sub1(), true);
     214        testContext(listener, context::sub2(), true);
     215        testContext(listener, context::sub3(), true);
     216    }
    6217}
Note: See TracChangeset for help on using the changeset viewer.