15 #ifndef INCG_IRIS_IUTEST_RESULT_REPORTER_HPP_803FD1F7_1FD2_4D1E_9AFC_A5851284316F_
16 #define INCG_IRIS_IUTEST_RESULT_REPORTER_HPP_803FD1F7_1FD2_4D1E_9AFC_A5851284316F_
31 class DefaultGlobalTestPartResultReporter :
public TestPartResultReporterInterface
37 DefaultReportTestPartResult(test_part_result);
39 static void DefaultReportTestPartResult(
const TestPartResult& test_part_result)
41 TestResult* result = UnitTestImpl::current_test_result();
44 result->AddTestPartResult(test_part_result);
48 iuConsole::output(
"%s", test_part_result.make_newline_message().c_str());
50 TestEnv::event_listeners().OnTestPartResult(test_part_result);
57 class NoTestPartResultReporter :
public TestPartResultReporterInterface
63 IUTEST_UNUSED_VAR(result);
70 class NewTestPartResultCheckHelper
73 template<TestPartResult::Type Type>
76 bool operator ()(
const TestPartResult& result)
78 return result.type() == Type;
82 template<TestPartResult::Type Type>
85 bool operator ()(
const TestPartResult& result)
87 return result.type() != Type;
91 template<TestPartResult::Type Type>
94 bool operator ()(
const TestPartResult& result)
96 return result.type() > Type;
103 ReporterHolder() : m_origin(NULL) {}
104 virtual ~ReporterHolder()
108 void Attach(TestPartResultReporterInterface* p)
110 m_origin = TestEnv::GetGlobalTestPartResultReporter();
111 TestEnv::SetGlobalTestPartResultReporter(p);
115 TestEnv::SetGlobalTestPartResultReporter(m_origin);
118 void ReportTestPartResultOrigin(
const TestPartResult& result)
122 m_origin->ReportTestPartResult(result);
126 TestPartResultReporterInterface* m_origin;
130 template<
typename COND,
typename REPORTER=DefaultGlobalTestPartResultReporter>
131 class Counter :
public REPORTER
133 typedef REPORTER _Mybase;
135 Counter() : m_count(0)
137 m_holder.Attach(
this);
145 _Mybase::ReportTestPartResult(result);
150 ReporterHolder m_holder;
156 template<
typename REPORTER=DefaultGlobalTestPartResultReporter>
157 class Collector :
public REPORTER
159 typedef REPORTER _Mybase;
160 typedef ::std::vector<TestPartResult> TestPartResults;
164 m_holder.Attach(
this);
169 m_results.push_back(result);
170 _Mybase::ReportTestPartResult(result);
174 const TestPartResult& GetTestPartResult(
size_t index)
const {
return m_results[index]; }
178 for( TestPartResults::iterator it=m_results.begin(); it != m_results.end(); ++it )
180 m_holder.ReportTestPartResultOrigin(*it);
184 ReporterHolder m_holder;
185 TestPartResults m_results;
194 inline void DefaultReportTestPartResult(
const TestPartResult& test_part_result)
196 DefaultGlobalTestPartResultReporter::DefaultReportTestPartResult(test_part_result);
202 #endif // INCG_IRIS_IUTEST_RESULT_REPORTER_HPP_803FD1F7_1FD2_4D1E_9AFC_A5851284316F_