iutest  1.17.1.0
iutest_util_quiet_result_printer.hpp
[詳解]
1 //======================================================================
2 //-----------------------------------------------------------------------
13 //-----------------------------------------------------------------------
14 //======================================================================
15 #ifndef INCG_IRIS_IUTEST_UTIL_QUIET_RESULT_PRINTER_HPP_0DF65DD7_C97C_44BA_940D_D22ED6AF9494_
16 #define INCG_IRIS_IUTEST_UTIL_QUIET_RESULT_PRINTER_HPP_0DF65DD7_C97C_44BA_940D_D22ED6AF9494_
17 
18 namespace iuutil
19 {
20 
21 //======================================================================
22 // class
23 
27 class QuietResultPrinter : public ::iutest::TestEventListener
28 {
29 public:
30  explicit QuietResultPrinter(::iutest::TestEventListener* default_printer)
31  : m_default_printer(default_printer)
32  {}
33  virtual ~QuietResultPrinter()
34  {
35  delete m_default_printer;
36  }
37 
38 public:
39  virtual void OnTestProgramStart(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
40  {
41  m_default_printer->OnTestProgramStart(unit_test);
42  }
43  virtual void OnTestIterationStart(const ::iutest::UnitTest& unit_test, int iteration) IUTEST_CXX_OVERRIDE
44  {
45  m_default_printer->OnTestIterationStart(unit_test, iteration);
46  }
47  virtual void OnEnvironmentsSetUpStart(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
48  {
49  m_default_printer->OnEnvironmentsSetUpStart(unit_test);
50  }
51  virtual void OnEnvironmentsSetUpEnd(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
52  {
53  m_default_printer->OnEnvironmentsSetUpEnd(unit_test);
54  }
55  virtual void OnTestCaseStart(const ::iutest::TestCase& test_case) IUTEST_CXX_OVERRIDE
56  {
57  m_default_printer->OnTestCaseStart(test_case);
58  }
59 
60 #if 0
61  virtual void OnTestStart(const ::iutest::TestInfo& test_info) IUTEST_CXX_OVERRIDE {}
62 
63  virtual void OnTestPartResult(const ::iutest::TestPartResult& test_part_result) IUTEST_CXX_OVERRIDE
64  {
65  if( ::iutest::UnitTest::GetInstance()->current_test_info() != NULL )
66  {
67  const ::iutest::TestInfo& test_info = *::iutest::UnitTest::GetInstance()->current_test_info();
68  if( test_info.result()->Failed()
69  && test_info.result()->total_part_count() == 1 )
70  {
71  m_default_printer->OnTestStart(test_info);
72  }
73  }
74  m_default_printer->OnTestPartResult(test_part_result);
75  }
76 #else
77  virtual void OnTestStart(const ::iutest::TestInfo& test_info) IUTEST_CXX_OVERRIDE
78  {
79  m_default_printer->OnTestStart(test_info);
80  }
81  virtual void OnTestPartResult(const ::iutest::TestPartResult& test_part_result) IUTEST_CXX_OVERRIDE
82  {
83  m_default_printer->OnTestPartResult(test_part_result);
84  }
85 #endif
86 
87  virtual void OnTestEnd(const ::iutest::TestInfo& test_info) IUTEST_CXX_OVERRIDE
88  {
89  if( test_info.result()->Failed() )
90  {
91  // 失敗したときのみ出力する
92  m_default_printer->OnTestEnd(test_info);
93  }
94  }
95  virtual void OnTestCaseEnd(const ::iutest::TestCase& test_case) IUTEST_CXX_OVERRIDE
96  {
97  m_default_printer->OnTestCaseEnd(test_case);
98  }
99  virtual void OnEnvironmentsTearDownStart(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
100  {
101  m_default_printer->OnEnvironmentsTearDownStart(unit_test);
102  }
103  virtual void OnEnvironmentsTearDownEnd(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
104  {
105  m_default_printer->OnEnvironmentsTearDownEnd(unit_test);
106  }
107  virtual void OnTestIterationEnd(const ::iutest::UnitTest& unit_test, int iteration) IUTEST_CXX_OVERRIDE
108  {
109  m_default_printer->OnTestIterationEnd(unit_test, iteration);
110  }
111  virtual void OnTestProgramEnd(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
112  {
113  m_default_printer->OnTestProgramEnd(unit_test);
114  }
115 private:
116  ::iutest::TestEventListener* m_default_printer;
117 
118 public:
122  static ::iutest::TestEventListener* SetUp()
123  {
125  ::iutest::TestEventListener* default_printer = listeners.Release(listeners.default_result_printer());
126  if( default_printer == NULL )
127  {
128  return NULL;
129  }
130  ::iutest::TestEventListener* p = new QuietResultPrinter(default_printer);
131  listeners.Append(p);
132  return p;
133  }
134 };
135 
136 } // end of namespace iuutil
137 
138 #endif // INCG_IRIS_IUTEST_UTIL_QUIET_RESULT_PRINTER_HPP_0DF65DD7_C97C_44BA_940D_D22ED6AF9494_
iutest::TestEventListener::OnEnvironmentsSetUpStart
virtual void OnEnvironmentsSetUpStart(const UnitTest &test)=0
グローバル環境設定 SetUp 前に呼ばれます
iutest::TestEventListener
イベントリスナー
Definition: iutest_listener.hpp:63
iutest::UnitTest::GetInstance
static UnitTest * GetInstance()
UnitTest インスタンスの取得
Definition: iutest_core.hpp:41
iutest::TestEventListener::OnTestPartResult
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
テスト失敗時に呼ばれます
iutest::TestEventListener::OnTestProgramStart
virtual void OnTestProgramStart(const UnitTest &test)=0
テストプログラム開始時に呼ばれます
iutest_config.hpp
iris unit test config
iutest::TestEventListener::OnTestProgramEnd
virtual void OnTestProgramEnd(const UnitTest &test)=0
テストプログラム終了時に呼ばれます
iuutil::QuietResultPrinter
コンパクトなデフォルトコンソール出力イベントリスナー
Definition: iutest_util_quiet_result_printer.hpp:28
iutest::TestEventListener::OnTestCaseStart
virtual void OnTestCaseStart(const TestCase &test_case)=0
テストケース開始時に呼ばれます
iutest::UnitTest::current_test_info
const TestInfo * current_test_info() const
テスト中の TestInfo の取得
Definition: iutest_core.hpp:53
iutest::TestEventListener::OnEnvironmentsSetUpEnd
virtual void OnEnvironmentsSetUpEnd(const UnitTest &test)=0
グローバル環境設定 SetUp 後に呼ばれます
iutest::TestEventListener::OnTestEnd
virtual void OnTestEnd(const TestInfo &test_info)=0
テストケース終了時にに呼ばれます
iutest::TestEventListener::OnEnvironmentsTearDownStart
virtual void OnEnvironmentsTearDownStart(const UnitTest &test)=0
グローバル環境設定 TearDown 前に呼ばれます
iutest::TestEventListeners::Release
TestEventListener * Release(TestEventListener *listener)
リスナーの解放
Definition: iutest_listener.hpp:174
iutest::TestEventListener::OnEnvironmentsTearDownEnd
virtual void OnEnvironmentsTearDownEnd(const UnitTest &test)=0
グローバル環境設定 TearDown 前に呼ばれます
IUTEST_CXX_OVERRIDE
#define IUTEST_CXX_OVERRIDE
override definition
Definition: iutest_compiler.hpp:670
iutest::TestEventListener::OnTestStart
virtual void OnTestStart(const TestInfo &test_info)=0
テスト開始時に呼ばれます
iuutil::QuietResultPrinter::SetUp
::iutest::TestEventListener * SetUp()
QuietResultPrinter に切り替え
Definition: iutest_util_quiet_result_printer.hpp:123
iutest::TestEventListener::OnTestIterationEnd
virtual void OnTestIterationEnd(const UnitTest &test, int iteration)=0
単体テスト終了時に毎回呼ばれます
iuutil
iutest utility namespace
Definition: iutest_util.hpp:33
iutest::TestEventListeners::Append
void Append(TestEventListener *listener)
リスナーの追加
Definition: iutest_listener.hpp:169
iutest::TestEventListener::OnTestIterationStart
virtual void OnTestIterationStart(const UnitTest &test, int iteration)=0
単体テスト開始時に毎回呼ばれます
iutest::TestEventListeners
イベントリスナーの管理クラス
Definition: iutest_listener.hpp:158
iutest::UnitTest::listeners
TestEventListeners & listeners() const
Definition: iutest_core.hpp:121
iutest::TestEventListener::OnTestCaseEnd
virtual void OnTestCaseEnd(const TestCase &test_case)=0
テスト終了時にに呼ばれます
iutest::TestEventListeners::default_result_printer
TestEventListener * default_result_printer() const IUTEST_CXX_NOEXCEPT_SPEC
デフォルト出力リスナーの取得
Definition: iutest_listener.hpp:180