Changeset 9539
- Timestamp:
- Mar 9, 2013, 9:33:48 PM (12 years ago)
- Location:
- code/branches/testing
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/testing/src/libraries/util/output/OutputManager.cc
r9537 r9539 307 307 { 308 308 // "undefined" context is ignored because it's used implicitly if no explicit context is defined 309 staticOutputContextMask undefined_mask = context::undefined().mask;309 OutputContextMask undefined_mask = context::undefined().mask; 310 310 311 311 std::string prefix = this->getLevelName(level) + ": "; -
code/branches/testing/src/libraries/util/output/SubcontextOutputListener.h
r9534 r9539 78 78 virtual bool acceptsOutput(OutputLevel level, const OutputContextContainer& context) const; 79 79 80 inline const std::set<OutputContextSubID>& getSubcontexts() const 81 { return this->subcontexts_; } 82 80 83 private: 81 84 OutputContextMask subcontextsCheckMask_; ///< All contexts defined by this mask need to be checked whether they are accepted by the set of sub-contexts -
code/branches/testing/test/util/output/BaseWriterTest.cc
r9529 r9539 1 1 #include <gtest/gtest.h> 2 #include <gmock/gmock.h> 2 3 #include "util/Output.h" 4 #include "util/output/BaseWriter.h" 5 #include "util/output/OutputManager.h" 3 6 4 7 namespace orxonox 5 8 { 9 namespace context 10 { 11 namespace 12 { 13 REGISTER_OUTPUT_CONTEXT(unittest1); 14 REGISTER_OUTPUT_CONTEXT(unittest2); 15 REGISTER_OUTPUT_CONTEXT(unittest3); 16 17 REGISTER_OUTPUT_SUBCONTEXT(unittest3, sub1); 18 REGISTER_OUTPUT_SUBCONTEXT(unittest3, sub2); 19 REGISTER_OUTPUT_SUBCONTEXT(unittest3, sub3); 20 } 21 } 22 23 namespace 24 { 25 class MockBaseWriter : public BaseWriter 26 { 27 public: 28 MockBaseWriter(const std::string& name, bool bRegister = true) : BaseWriter(name, bRegister) {} 29 30 MOCK_METHOD2(printLine, void(const std::string&, OutputLevel)); 31 32 virtual void output(OutputLevel level, const OutputContextContainer& context, const std::vector<std::string>& lines) 33 { this->BaseWriter::output(level, context, lines); } 34 }; 35 } 36 37 // test getName 38 TEST(BaseWriterTest, GetName) 39 { 40 MockBaseWriter writer("mytestname"); 41 EXPECT_EQ("mytestname", writer.getName()); 42 } 43 44 // test configurable names contain name 45 TEST(BaseWriterTest, ConfigurableNamesContainName) 46 { 47 MockBaseWriter writer("mytestname"); 48 EXPECT_NE(writer.getConfigurableMaxLevelName().find(writer.getName()), std::string::npos); 49 EXPECT_NE(writer.getConfigurableAdditionalContextsMaxLevelName().find(writer.getName()), std::string::npos); 50 EXPECT_NE(writer.getConfigurableAdditionalContextsName().find(writer.getName()), std::string::npos); 51 52 // but the section name is 'static' (does not contain the name) 53 EXPECT_EQ(writer.getConfigurableSectionName().find(writer.getName()), std::string::npos); 54 } 55 56 // output calls printLine for each line 57 TEST(BaseWriterTest, OutputCallsPrintLine) 58 { 59 MockBaseWriter writer("mytestname"); 60 61 std::vector<std::string> lines; 62 lines.push_back("line1"); 63 lines.push_back("line2"); 64 65 EXPECT_CALL(writer, printLine(::testing::_, level::debug_output)).Times(2); 66 67 writer.output(level::debug_output, context::undefined(), lines); 68 } 69 70 // output adds prefix to first line 71 TEST(BaseWriterTest, OutputAddsPrefixToFirstLine) 72 { 73 MockBaseWriter writer("mytestname"); 74 75 std::vector<std::string> lines; 76 lines.push_back("line1"); 77 78 std::string prefix = OutputManager::getInstance().getDefaultPrefix(level::debug_output, context::undefined()); 79 EXPECT_CALL(writer, printLine(prefix + "line1", level::debug_output)); 80 81 writer.output(level::debug_output, context::undefined(), lines); 82 } 83 84 // setLevelMax sets level max 85 void testLevelMaxUserWarning(OutputLevel mask) 86 { 87 EXPECT_FALSE(mask & level::none); 88 EXPECT_TRUE(mask & level::message); 89 EXPECT_TRUE(mask & level::debug_output); 90 EXPECT_TRUE(mask & level::user_error); 91 EXPECT_TRUE(mask & level::user_warning); 92 EXPECT_FALSE(mask & level::user_status); 93 EXPECT_FALSE(mask & level::verbose); 94 } 95 96 TEST(BaseWriterTest, SetLevelMax) 97 { 98 MockBaseWriter writer("mytestname"); 99 100 writer.setLevelMax(level::user_warning); 101 testLevelMaxUserWarning(writer.getLevelMask()); 102 } 103 104 // setAdditionalContextsLevelMax sets additional contexts level max 105 TEST(BaseWriterTest, SetAdditionalContextsLevelMax) 106 { 107 MockBaseWriter writer("mytestname"); 108 109 writer.setAdditionalContextsLevelMax(level::user_warning); 110 testLevelMaxUserWarning(writer.getAdditionalContextsLevelMask()); 111 } 112 113 // changedConfigurableLevel sets max level to configurableMaxLevel_ 114 TEST(BaseWriterTest, ChangedConfigurableLevel) 115 { 116 MockBaseWriter writer("mytestname"); 117 118 writer.configurableMaxLevel_ = level::user_warning; 119 writer.changedConfigurableLevel(); 120 121 testLevelMaxUserWarning(writer.getLevelMask()); 122 } 123 124 // changedConfigurableAdditionalContextsLevel sets additional contexts level max to configurableAdditionalContextsMaxLevel_ 125 TEST(BaseWriterTest, ChangedConfigurableAdditionalContextsLevel) 126 { 127 MockBaseWriter writer("mytestname"); 128 129 writer.configurableAdditionalContextsMaxLevel_ = level::user_warning; 130 writer.changedConfigurableAdditionalContextsLevel(); 131 132 testLevelMaxUserWarning(writer.getAdditionalContextsLevelMask()); 133 } 134 135 // changedConfigurableAdditionalContexts sets additional contexts to configurableAdditionalContexts_ 136 TEST(BaseWriterTest, ChangedConfigurableAdditionalContexts) 137 { 138 MockBaseWriter writer("mytestname"); 139 140 writer.configurableAdditionalContexts_.push_back("unittest1"); 141 writer.changedConfigurableAdditionalContexts(); 142 143 EXPECT_TRUE(writer.getAdditionalContextsMask() & context::unittest1().mask); 144 } 145 146 // contexts added by name 147 TEST(BaseWriterTest, DefineContextsByName) 148 { 149 MockBaseWriter writer("mytestname"); 150 151 writer.configurableAdditionalContexts_.push_back("unittest1"); 152 writer.configurableAdditionalContexts_.push_back("unittest2"); 153 writer.changedConfigurableAdditionalContexts(); 154 155 EXPECT_TRUE(writer.acceptsOutput(level::message, context::unittest1())); 156 EXPECT_TRUE(writer.acceptsOutput(level::message, context::unittest2())); 157 EXPECT_FALSE(writer.acceptsOutput(level::message, context::unittest3())); 158 } 159 160 // subcontexts added by name, separated from base context with "::" 161 TEST(BaseWriterTest, DefineSubcontextsByName) 162 { 163 MockBaseWriter writer("mytestname"); 164 165 writer.configurableAdditionalContexts_.push_back("unittest3::sub1"); 166 writer.configurableAdditionalContexts_.push_back("unittest3::sub3"); 167 writer.changedConfigurableAdditionalContexts(); 168 169 EXPECT_FALSE(writer.acceptsOutput(level::message, context::unittest3())); 170 EXPECT_FALSE(writer.acceptsOutput(level::message, context::unittest3())); 171 EXPECT_FALSE(writer.acceptsOutput(level::message, context::unittest3())); 172 EXPECT_TRUE(writer.acceptsOutput(level::message, context::sub1())); 173 EXPECT_FALSE(writer.acceptsOutput(level::message, context::sub2())); 174 EXPECT_TRUE(writer.acceptsOutput(level::message, context::sub3())); 175 } 6 176 }
Note: See TracChangeset
for help on using the changeset viewer.