[詳解]
15 #ifndef INCG_IRIS_IUTEST_TAP_PRINTER_HPP_77055C2B_AAE1_4944_A61C_26C58B04B37B_
16 #define INCG_IRIS_IUTEST_TAP_PRINTER_HPP_77055C2B_AAE1_4944_A61C_26C58B04B37B_
20 #include "../iutest_core.hpp"
21 #include "../internal/iutest_log_stream.hpp"
22 #include "../internal/iutest_filepath.hpp"
32 class TAPPrintListener :
public EmptyTestEventListener
61 class TAPFileGeneratorListener :
public TAPPrintListener
63 ::std::string m_output_path;
71 SetFilePath(directory);
77 const ::std::string&
GetFilePath()
const {
return m_output_path; }
82 void SetFilePath(
const char* directory)
84 if( directory == NULL || *directory ==
'\0' )
86 m_output_path = internal::posix::GetCWD();
90 detail::iuFilePath path(directory);
91 if( path.IsDirectory() )
93 m_output_path = directory;
97 m_output_path = path.RemoveFileName().ToString();
104 IUTEST_UNUSED_VAR(test);
108 IUTEST_UNUSED_VAR(test_property);
116 static TestEventListener*
SetUp()
119 const ::std::string& output = TestEnv::get_output_option();
128 IUTEST_UNUSED_VAR(test);
132 detail::iuConsole::color_output(detail::iuConsole::yellow
133 ,
"# Note: iutest filter = %s\n", TestEnv::test_filter());
138 detail::LogStream stream;
149 detail::iuConsole::output(
"1..%d\n", number-1);
153 stream->Printf(
"# %s started.\n", test_case.
name());
155 for(
int i=0, test_count=test_case.
total_test_count(); i < test_count; ++i )
161 stream->Printf(
"ok %d # SKIP - %s\n", top+i, test_info->
name());
167 stream->Printf(
"not ok %d - %s ", top+i, test_info->
name() );
171 ::std::string summary = part.make_message();
173 detail::StringReplace(summary,
'\n',
", ");
174 stream->Printf(
"%s. ", summary.c_str() );
176 stream->Printf(
"\n");
180 stream->Printf(
"ok %d - %s\n", top+i, test_info->
name() );
185 stream->Printf(
"# %s ended.\n", test_case.
name());
194 IUTEST_UNUSED_VAR(test);
195 IFile* fp = detail::IFileSystem::New();
201 ::std::string filepath = m_output_path;
202 ::std::string name = test_case.
name();
203 detail::StringReplace(name,
'/',
"_");
204 filepath += detail::GetPathSeparator();
210 fprintf(stderr,
"Unable to open file \"%s\".\n", filepath.c_str());
219 detail::IFileSystem::Free(fp);
225 #endif // INCG_IRIS_IUTEST_TAP_PRINTER_HPP_77055C2B_AAE1_4944_A61C_26C58B04B37B_
空のイベントリスナー
Definition: iutest_listener.hpp:91
イベントリスナー
Definition: iutest_listener.hpp:63
static UnitTest * GetInstance()
UnitTest インスタンスの取得
Definition: iutest_core.hpp:41
virtual void OnTestProgramEnd(const UnitTest &test) IUTEST_CXX_OVERRIDE
テストプログラム終了時に呼ばれます
Definition: iutest_tap_printer.hpp:137
テスト情報クラス
Definition: iutest_info.hpp:32
virtual void OnTestProgramStart(const UnitTest &test) IUTEST_CXX_OVERRIDE
テストプログラム開始時に呼ばれます
Definition: iutest_tap_printer.hpp:103
iutest root namespace
Definition: iutest_charcode.hpp:31
bool should_run() const IUTEST_CXX_NOEXCEPT_SPEC
Definition: iutest_info.hpp:63
テスト全体の管理者
Definition: iutest_core.hpp:33
const TestResult * result() const IUTEST_CXX_NOEXCEPT_SPEC
Definition: iutest_info.hpp:75
static TestEventListener * SetUp()
TAPFileGeneratorListener に切り替え
Definition: iutest_tap_printer.hpp:117
int total_test_case_count() const
Definition: iutest_core.hpp:89
const ::std::string & GetFilePath() const
出力パスの取得
Definition: iutest_tap_printer.hpp:78
TAP出力イベントリスナー
Definition: iutest_tap_printer.hpp:33
TestEventListener * Release(TestEventListener *listener)
リスナーの解放
Definition: iutest_listener.hpp:174
static TestEventListener * SetUp()
TAPPrintListener に切り替え
Definition: iutest_tap_printer.hpp:49
TAPFileGeneratorListener(const char *directory=NULL)
コンストラクタ
Definition: iutest_tap_printer.hpp:70
const TestInfo * GetTestInfo(int index) const
Definition: iutest_case.hpp:103
bool HasFailure() const
エラーが出たかどうか
Definition: iutest_info.hpp:110
virtual void Close()=0
閉じる
#define IUTEST_CXX_OVERRIDE
override definition
Definition: iutest_compiler.hpp:670
const TestPartResult & GetTestPartResult(int index) const
テスト結果の取得
Definition: iutest_result.hpp:306
const TestCase * GetTestCase(int index) const
Definition: iutest_core.hpp:113
bool Open(const char *filename, int mode)
開く
Definition: iutest_file.hpp:52
void OnReportTestCase(detail::IOutStream *const stream, const TestCase &test_case, int top=1)
テストケース毎の処理
Definition: iutest_tap_printer.hpp:152
void Append(TestEventListener *listener)
リスナーの追加
Definition: iutest_listener.hpp:169
ファイルクラスインターフェイス
Definition: iutest_file.hpp:32
virtual void OnTestProgramStart(const UnitTest &test) IUTEST_CXX_OVERRIDE
テストプログラム開始時に呼ばれます
Definition: iutest_tap_printer.hpp:127
テストプロパティ
Definition: iutest_result.hpp:156
int total_test_count() const IUTEST_CXX_NOEXCEPT_SPEC
Definition: iutest_case.hpp:76
const char * name() const
Definition: iutest_case.hpp:73
イベントリスナーの管理クラス
Definition: iutest_listener.hpp:158
static bool IsEnableFlag(int flag)
フラグが立っているかどうか
Definition: iutest_env.hpp:208
virtual void OnTestProgramEnd(const UnitTest &test) IUTEST_CXX_OVERRIDE
テストプログラム終了時に呼ばれます
Definition: iutest_tap_printer.hpp:189
テスト結果を示すクラス
Definition: iutest_result.hpp:54
TAPファイル出力イベントリスナー
Definition: iutest_tap_printer.hpp:62
int total_part_count() const
結果の数を取得
Definition: iutest_result.hpp:293
const char * name() const
Definition: iutest_info.hpp:61
@ OpenWrite
書き込み
Definition: iutest_file.hpp:39
TestEventListeners & listeners() const
Definition: iutest_core.hpp:121
TestEventListener * default_result_printer() const IUTEST_CXX_NOEXCEPT_SPEC
デフォルト出力リスナーの取得
Definition: iutest_listener.hpp:180
テストケース
Definition: iutest_case.hpp:31
@ FILTERING_TESTS
テストのフィルタリング
Definition: iutest_env.hpp:145