iutest  1.17.1.0
iutest_progress_printer.hpp
[詳解]
1 //======================================================================
2 //-----------------------------------------------------------------------
13 //-----------------------------------------------------------------------
14 //======================================================================
15 #ifndef INCG_IRIS_IUTEST_PROGRESS_PRINTER_HPP_D31CE626_EA82_4265_B2B6_50EC5C63CFB6_
16 #define INCG_IRIS_IUTEST_PROGRESS_PRINTER_HPP_D31CE626_EA82_4265_B2B6_50EC5C63CFB6_
17 
18 //======================================================================
19 // include
20 #include "../iutest_core.hpp"
21 
22 namespace iutest
23 {
24 
25 //======================================================================
26 // class
30 class ProgressPrintListener : public EmptyTestEventListener
31 {
32 public:
33  ProgressPrintListener() : m_should_run_num(0), m_ran_num(0) {}
34 public:
35  virtual void OnTestProgramStart(const UnitTest& test) IUTEST_CXX_OVERRIDE;
36  virtual void OnTestIterationStart(const UnitTest& test
37  , int iteration) IUTEST_CXX_OVERRIDE;
38  virtual void OnTestEnd(const TestInfo& test_info) IUTEST_CXX_OVERRIDE;
39 
40 private:
41  int m_should_run_num;
42  int m_ran_num;
43 
44 public:
48  static TestEventListener* SetUp()
49  {
51  delete listeners.Release(listeners.default_result_printer());
53  listeners.Append(p);
54  return p;
55  }
56 };
57 
58 inline void ProgressPrintListener::OnTestProgramStart(const UnitTest& test)
59 {
60  IUTEST_UNUSED_VAR(test);
61 
62  detail::iuConsole::output("0%% 10 20 30 40 50 60 70 80 90 100%%\n");
63  detail::iuConsole::output("|----|----|----|----|----|----|----|----|----|----| \n");
64 }
66  , int iteration)
67 {
68  IUTEST_UNUSED_VAR(iteration);
69 
70  m_should_run_num = test.test_to_run_count();
71  m_ran_num = 0;
72 }
73 inline void ProgressPrintListener::OnTestEnd(const TestInfo& test_info)
74 {
75  IUTEST_UNUSED_VAR(test_info);
76 
77  ++m_ran_num;
78  const int star_count = 51;
79  const int n = (m_ran_num * star_count) / m_should_run_num;
80  char progress[star_count + 2] = { 0 };
81  for( int i=0; i < n; ++i )
82  {
83  progress[i] = '*';
84  }
85  progress[n] = m_ran_num == m_should_run_num ? '\n' : '\r';
86  progress[n + 1] = '\0';
87  detail::iuConsole::output("%s", progress);
88 }
89 
90 } // end of namespace iutest
91 
92 #endif // INCG_IRIS_IUTEST_PROGRESS_PRINTER_HPP_D31CE626_EA82_4265_B2B6_50EC5C63CFB6_
iutest::EmptyTestEventListener
空のイベントリスナー
Definition: iutest_listener.hpp:91
iutest::TestEventListener
イベントリスナー
Definition: iutest_listener.hpp:63
iutest::UnitTest::GetInstance
static UnitTest * GetInstance()
UnitTest インスタンスの取得
Definition: iutest_core.hpp:41
iutest::TestInfo
テスト情報クラス
Definition: iutest_info.hpp:32
iutest_config.hpp
iris unit test config
iutest
iutest root namespace
Definition: iutest_charcode.hpp:31
iutest::UnitTest
テスト全体の管理者
Definition: iutest_core.hpp:33
iutest::ProgressPrintListener
プログレス出力イベントリスナー
Definition: iutest_progress_printer.hpp:31
iutest::TestEventListeners::Release
TestEventListener * Release(TestEventListener *listener)
リスナーの解放
Definition: iutest_listener.hpp:174
IUTEST_CXX_OVERRIDE
#define IUTEST_CXX_OVERRIDE
override definition
Definition: iutest_compiler.hpp:670
iutest::ProgressPrintListener::OnTestProgramStart
virtual void OnTestProgramStart(const UnitTest &test) IUTEST_CXX_OVERRIDE
テストプログラム開始時に呼ばれます
Definition: iutest_progress_printer.hpp:59
iutest::ProgressPrintListener::OnTestEnd
virtual void OnTestEnd(const TestInfo &test_info) IUTEST_CXX_OVERRIDE
テストケース終了時にに呼ばれます
Definition: iutest_progress_printer.hpp:74
iutest::TestEventListeners::Append
void Append(TestEventListener *listener)
リスナーの追加
Definition: iutest_listener.hpp:169
iutest::ProgressPrintListener::OnTestIterationStart
virtual void OnTestIterationStart(const UnitTest &test, int iteration) IUTEST_CXX_OVERRIDE
単体テスト開始時に毎回呼ばれます
Definition: iutest_progress_printer.hpp:66
iutest::ProgressPrintListener::SetUp
static TestEventListener * SetUp()
ProgressPrintListener に切り替え
Definition: iutest_progress_printer.hpp:49
iutest::TestEventListeners
イベントリスナーの管理クラス
Definition: iutest_listener.hpp:158
iutest::UnitTest::test_to_run_count
int test_to_run_count() const IUTEST_CXX_NOEXCEPT_SPEC
Definition: iutest_core.hpp:70
iutest::UnitTest::listeners
TestEventListeners & listeners() const
Definition: iutest_core.hpp:121
iutest::TestEventListeners::default_result_printer
TestEventListener * default_result_printer() const IUTEST_CXX_NOEXCEPT_SPEC
デフォルト出力リスナーの取得
Definition: iutest_listener.hpp:180