iutest  1.17.99.14
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 #if IUTEST_HAS_TESTSUITE
56  virtual void OnTestSuiteStart(const ::iutest::TestSuite& test_suite) IUTEST_CXX_OVERRIDE
57  {
58  m_default_printer->OnTestSuiteStart(test_suite);
59  }
60 #else
61  virtual void OnTestCaseStart(const ::iutest::TestCase& test_case) IUTEST_CXX_OVERRIDE
62  {
63  m_default_printer->OnTestCaseStart(test_case);
64  }
65 #endif
66 
67 #if 0
68  virtual void OnTestStart(const ::iutest::TestInfo& test_info) IUTEST_CXX_OVERRIDE {}
69 
70  virtual void OnTestPartResult(const ::iutest::TestPartResult& test_part_result) IUTEST_CXX_OVERRIDE
71  {
72  if( ::iutest::UnitTest::GetInstance()->current_test_info() != NULL )
73  {
74  const ::iutest::TestInfo& test_info = *::iutest::UnitTest::GetInstance()->current_test_info();
75  if( test_info.result()->Failed()
76  && test_info.result()->total_part_count() == 1 )
77  {
78  m_default_printer->OnTestStart(test_info);
79  }
80  }
81  m_default_printer->OnTestPartResult(test_part_result);
82  }
83 #else
84  virtual void OnTestStart(const ::iutest::TestInfo& test_info) IUTEST_CXX_OVERRIDE
85  {
86  m_default_printer->OnTestStart(test_info);
87  }
88  virtual void OnTestPartResult(const ::iutest::TestPartResult& test_part_result) IUTEST_CXX_OVERRIDE
89  {
90  m_default_printer->OnTestPartResult(test_part_result);
91  }
92 #endif
93 
94  virtual void OnTestEnd(const ::iutest::TestInfo& test_info) IUTEST_CXX_OVERRIDE
95  {
96  if( test_info.result()->Failed() )
97  {
98  // 失敗したときのみ出力する
99  m_default_printer->OnTestEnd(test_info);
100  }
101  }
102 #if IUTEST_HAS_TESTSUITE
103  virtual void OnTestSuiteEnd(const ::iutest::TestSuite& test_suite) IUTEST_CXX_OVERRIDE
104  {
105  m_default_printer->OnTestSuiteEnd(test_suite);
106  }
107 #else
108  virtual void OnTestCaseEnd(const ::iutest::TestCase& test_case) IUTEST_CXX_OVERRIDE
109  {
110  m_default_printer->OnTestCaseEnd(test_case);
111  }
112 #endif
113  virtual void OnEnvironmentsTearDownStart(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
114  {
115  m_default_printer->OnEnvironmentsTearDownStart(unit_test);
116  }
117  virtual void OnEnvironmentsTearDownEnd(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
118  {
119  m_default_printer->OnEnvironmentsTearDownEnd(unit_test);
120  }
121  virtual void OnTestIterationEnd(const ::iutest::UnitTest& unit_test, int iteration) IUTEST_CXX_OVERRIDE
122  {
123  m_default_printer->OnTestIterationEnd(unit_test, iteration);
124  }
125  virtual void OnTestProgramEnd(const ::iutest::UnitTest& unit_test) IUTEST_CXX_OVERRIDE
126  {
127  m_default_printer->OnTestProgramEnd(unit_test);
128  }
129 private:
130  ::iutest::TestEventListener* m_default_printer;
131 
132 public:
136  static ::iutest::TestEventListener* SetUp()
137  {
139  ::iutest::TestEventListener* default_printer = listeners.Release(listeners.default_result_printer());
140  if( default_printer == NULL )
141  {
142  return NULL;
143  }
144  ::iutest::TestEventListener* p = new QuietResultPrinter(default_printer);
145  listeners.Append(p);
146  return p;
147  }
148 };
149 
150 } // end of namespace iuutil
151 
152 #endif // INCG_IRIS_IUTEST_UTIL_QUIET_RESULT_PRINTER_HPP_0DF65DD7_C97C_44BA_940D_D22ED6AF9494_
イベントリスナー
Definition: iutest_listener.hpp:64
virtual void OnTestEnd(const TestInfo &test_info)=0
テスト終了時にに呼ばれます
virtual void OnTestIterationEnd(const UnitTest &test, int iteration)=0
単体テスト終了時に毎回呼ばれます
virtual void OnEnvironmentsTearDownEnd(const UnitTest &test)=0
グローバル環境設定 TearDown 前に呼ばれます
virtual void OnTestSuiteStart(const TestSuite &test_suite)
TestSuite 開始時に呼ばれます
Definition: iutest_listener.hpp:76
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
テスト失敗時に呼ばれます
virtual void OnTestProgramStart(const UnitTest &test)=0
テストプログラム開始時に呼ばれます
virtual void OnTestSuiteEnd(const TestSuite &test_suite)
TestSuite 終了時にに呼ばれます
Definition: iutest_listener.hpp:86
virtual void OnTestIterationStart(const UnitTest &test, int iteration)=0
単体テスト開始時に毎回呼ばれます
virtual void OnTestStart(const TestInfo &test_info)=0
テスト開始時に呼ばれます
virtual void OnTestProgramEnd(const UnitTest &test)=0
テストプログラム終了時に呼ばれます
virtual void OnEnvironmentsSetUpEnd(const UnitTest &test)=0
グローバル環境設定 SetUp 後に呼ばれます
virtual void OnEnvironmentsSetUpStart(const UnitTest &test)=0
グローバル環境設定 SetUp 前に呼ばれます
virtual void OnEnvironmentsTearDownStart(const UnitTest &test)=0
グローバル環境設定 TearDown 前に呼ばれます
イベントリスナーの管理クラス
Definition: iutest_listener.hpp:169
TestEventListener * Release(TestEventListener *listener)
リスナーの解放
Definition: iutest_listener.hpp:184
void Append(TestEventListener *listener)
リスナーの追加
Definition: iutest_listener.hpp:179
TestEventListener * default_result_printer() const IUTEST_CXX_NOEXCEPT_SPEC
デフォルト出力リスナーの取得
Definition: iutest_listener.hpp:201
static UnitTest * GetInstance()
UnitTest インスタンスの取得
Definition: iutest_core.hpp:43
const TestInfo * current_test_info() const
テスト中の TestInfo の取得
Definition: iutest_core.hpp:55
TestEventListeners & listeners() const
Definition: iutest_core.hpp:123
コンパクトなデフォルトコンソール出力イベントリスナー
Definition: iutest_util_quiet_result_printer.hpp:29
::iutest::TestEventListener * SetUp()
QuietResultPrinter に切り替え
Definition: iutest_util_quiet_result_printer.hpp:137
#define IUTEST_CXX_OVERRIDE
override definition
Definition: iutest_compiler.hpp:747
iutest utility namespace
Definition: iutest_util.hpp:36