Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
Test Tools

クラス

class  theolizer::PrepareDir
 テスト用フォルダの準備 [詳解]
 
class  theolizer::ThreadGuard
 スレッド・オブジェクト
[詳解]
 

マクロ定義

#define THEOLIZER_EQUAL(dLhs, ...)
 
#define THEOLIZER_EQUAL_PTR(dLhs, dRhs)
 
#define THEOLIZER_CHECK(dJudge, ...)
 
#define THEOLIZER_REQUIRE(dJudge, ...)
 
#define THEOLIZER_CHECK_EXCEPTION(dStatements, dException)
 
#define THEOLIZER_REQUIRE_EXCEPTION(dStatements, dException)
 
#define THEOLIZER_CHECK_EXCEPTION2(dStatement, dException, dJudge, dResult)
 
#define THEOLIZER_REQUIRE_EXCEPTION2(dStatement, dException, dJudge, dResult)
 

関数

THEOLIZER_INTERNAL_DLL std::ostream & operator<< (std::ostream &iOStream, char iChar)
 
THEOLIZER_INTERNAL_DLL std::ostream & operator<< (std::ostream &iOStream, signed char iSChar)
 
THEOLIZER_INTERNAL_DLL std::ostream & operator<< (std::ostream &iOStream, unsigned char iUChar)
 
template<typename tEnum , THEOLIZER_INTERNAL_OVERLOAD((std::is_enum< tEnum >::value)) >
std::ostream & operator<< (std::ostream &iOStream, tEnum iEnum)
 
THEOLIZER_INTERNAL_DLL std::ostream & operator<< (std::ostream &iOStream, std::type_info const &)
 
template<typename tReleaser >
internal::ScopeExit< tReleaser > theolizer::makeScopeExit (tReleaser &&iReleaser) noexcept
 
 theolizer::DisplayPass::DisplayPass ()
 
static bool theolizer::DisplayPass::on ()
 
void theolizer::cutOptimize ()
 MinGW不具合対処 [詳解]
 
THEOLIZER_INTERNAL_DLL void theolizer::initResult ()
 
THEOLIZER_INTERNAL_DLL void theolizer::incrementFailCount ()
 
THEOLIZER_INTERNAL_DLL bool theolizer::printResult (char const *iTitle=nullptr)
 
 theolizer::PrepareDir::PrepareDir (std::string const &iDirPath, bool iIsNoDelete=false)
 
 theolizer::PrepareDir::~PrepareDir ()
 
THEOLIZER_INTERNAL_DLL void theolizer::removeFile (u8string const &iFilePath)
 ファイルの削除 [詳解]
 
THEOLIZER_INTERNAL_DLL std::vector< std::string > theolizer::getFileList (std::string const &iDirPath, std::string const &iRegex="")
 ファイル・リスト獲得 [詳解]
 
THEOLIZER_INTERNAL_DLL void theolizer::setWritePermission (const u8string &iPath, bool iIsEnable)
 アクセス許可設定 [詳解]
 
 theolizer::ThreadGuard::ThreadGuard () noexcept
 
template<class Fn , class... Args>
 theolizer::ThreadGuard::ThreadGuard (Fn &&fn, Args &&... args)
 
 theolizer::ThreadGuard::ThreadGuard (const ThreadGuard &)=delete
 
 theolizer::ThreadGuard::ThreadGuard (ThreadGuard &&iThread) noexcept
 
ThreadGuardtheolizer::ThreadGuard::operator= (ThreadGuard &&iTheread)
 
 theolizer::ThreadGuard::~ThreadGuard ()
 
std::string const & theolizer::ThreadGuard::getThreadId ()
 

詳解

マクロ定義詳解

§ THEOLIZER_CHECK

#define THEOLIZER_CHECK (   dJudge,
  ... 
)
値:
do \
{ \
bool aIsPass=true; \
THEOLIZER_INTERNAL_JUDGE(false, dJudge, #dJudge); \
THEOLIZER_INTERNAL_RESULT_FOR(__VA_ARGS__); \
theolizer::internal::unlockMutex(); \
} \
while(0)

結果がtrueになることをテストする。

test_tool.h574 行目に定義があります。

§ THEOLIZER_CHECK_EXCEPTION

#define THEOLIZER_CHECK_EXCEPTION (   dStatements,
  dException 
)
値:
do \
{ \
bool aIsPass=true; \
try \
{ \
dStatements \
aIsPass=false; \
THEOLIZER_INTERNAL_JUDGE(false, false, "No exception(" #dException ")");\
} \
catch (dException) \
{ \
THEOLIZER_INTERNAL_JUDGE(false, true, "exception(" #dException ")");\
} \
theolizer::internal::unlockMutex(); \
} \
while(0)

例外が発生することをチェックする(Fail時、処理継続)

test_tool.h603 行目に定義があります。

§ THEOLIZER_CHECK_EXCEPTION2

#define THEOLIZER_CHECK_EXCEPTION2 (   dStatement,
  dException,
  dJudge,
  dResult 
)
値:
do \
{ \
bool aIsPass=true; \
try \
{ \
dStatement; \
aIsPass=false; \
THEOLIZER_INTERNAL_JUDGE(false, false, "No exception(" #dException ")");\
} \
catch (dException) \
{ \
THEOLIZER_INTERNAL_JUDGE(false, dJudge, #dJudge); \
THEOLIZER_INTERNAL_RESULT(dResult); \
} \
theolizer::internal::unlockMutex(); \
} \
while(0)

例外が発生することをチェックする(Fail時、処理継続)

test_tool.h648 行目に定義があります。

§ THEOLIZER_EQUAL

#define THEOLIZER_EQUAL (   dLhs,
  ... 
)
値:
do \
{ \
bool aIsPass=true; \
THEOLIZER_INTERNAL_JUDGE_ONLY(false, \
((dLhs)==THEOLZIER_INTERNAL_FIRST(__VA_ARGS__))); \
if (!aIsPass && theolizer::internal::checkFailCount()) { \
theolizer::internal::getOStream() \
<< THEOLIZER_INTERNAL_FILE << "(" << __LINE__ << ")\n"; \
} else if (theolizer::DisplayPass::on()) { \
theolizer::internal::getOStream() << "\n" THEOLIZER_INTERNAL_PASS "\n"\
<< THEOLIZER_INTERNAL_FILE << "(" << __LINE__ << ")\n"; \
} \
THEOLIZER_INTERNAL_RESULT(dLhs); \
THEOLIZER_INTERNAL_RESULT_FOR(__VA_ARGS__); \
theolizer::internal::unlockMutex(); \
} \
while(0)

値が一致することをテストする。(ポインタ以外)

test_tool.h527 行目に定義があります。

§ THEOLIZER_EQUAL_PTR

#define THEOLIZER_EQUAL_PTR (   dLhs,
  dRhs 
)
値:
do \
{ \
bool aIsPass=true; \
THEOLIZER_INTERNAL_JUDGE_ONLY(false, (dLhs) == (dRhs)); \
if (!aIsPass && theolizer::internal::checkFailCount()) { \
theolizer::internal::getOStream() \
<< THEOLIZER_INTERNAL_FILE << "(" << __LINE__ << ")\n"; \
} else if (theolizer::DisplayPass::on()) { \
theolizer::internal::getOStream() << "\n" THEOLIZER_INTERNAL_PASS "\n"\
<< THEOLIZER_INTERNAL_FILE << "(" << __LINE__ << ")\n"; \
} \
THEOLIZER_INTERNAL_RESULT_PTR(dLhs); \
THEOLIZER_INTERNAL_RESULT_PTR(dRhs); \
theolizer::internal::unlockMutex(); \
} \
while(0)

ポインタの値が一致することをテストする。

test_tool.h552 行目に定義があります。

§ THEOLIZER_REQUIRE

#define THEOLIZER_REQUIRE (   dJudge,
  ... 
)
値:
do \
{ \
bool aIsPass=true; \
THEOLIZER_INTERNAL_JUDGE(true, dJudge, #dJudge); \
THEOLIZER_INTERNAL_RESULT_FOR(__VA_ARGS__); \
theolizer::internal::unlockMutex(); \
if (!aIsPass) theolizer::internal::throwAbort(); \
} \
while(0)
theolizer名前空間
Definition: base.h:53

結果がtrueになることをテストする。(Fail時、以降の処理を中断する)

test_tool.h588 行目に定義があります。

§ THEOLIZER_REQUIRE_EXCEPTION

#define THEOLIZER_REQUIRE_EXCEPTION (   dStatements,
  dException 
)
値:
do \
{ \
bool aIsPass=true; \
try \
{ \
dStatements \
aIsPass=false; \
THEOLIZER_INTERNAL_JUDGE(true, false, "No exception(" #dException ")");\
} \
catch (dException) \
{ \
THEOLIZER_INTERNAL_JUDGE(false, true, "exception(" #dException ")");\
} \
theolizer::internal::unlockMutex(); \
if (!aIsPass) theolizer::internal::throwAbort(); \
} \
while(0)
theolizer名前空間
Definition: base.h:53

例外が発生することをチェックする(Fail時、処理中断)

test_tool.h625 行目に定義があります。

§ THEOLIZER_REQUIRE_EXCEPTION2

#define THEOLIZER_REQUIRE_EXCEPTION2 (   dStatement,
  dException,
  dJudge,
  dResult 
)
値:
do \
{ \
bool aIsPass=true; \
try \
{ \
dStatement; \
aIsPass=false; \
THEOLIZER_INTERNAL_JUDGE(true, false, "No exception(" #dException ")");\
} \
catch (dException) \
{ \
THEOLIZER_INTERNAL_JUDGE(true, dJudge, #dJudge); \
THEOLIZER_INTERNAL_RESULT(dResult); \
} \
theolizer::internal::unlockMutex(); \
if (!aIsPass) theolizer::internal::throwAbort(); \
} \
while(0)
theolizer名前空間
Definition: base.h:53

例外が発生することをチェックする(Fail時、処理中断)

test_tool.h671 行目に定義があります。

関数詳解

§ cutOptimize()

void theolizer::cutOptimize ( )
inline

MinGW不具合対処

関数テンプレートで浮動小数点を取り扱う時、最適化上の不具合がある模様
処理に割り込んで最適化させないためのダミー関数

test_tool.h224 行目に定義があります。

§ DisplayPass()

theolizer::DisplayPass::DisplayPass ( )
explicit

デフォルト・コンストラクタ

§ getFileList()

THEOLIZER_INTERNAL_DLL std::vector<std::string> theolizer::getFileList ( std::string const &  iDirPath,
std::string const &  iRegex = "" 
)

ファイル・リスト獲得

指定フォルダ内のファイル(フォルダ除く)のリストを返却する。
  ファイル名(拡張子含む)が正規表現iRegexとマッチするもののみ。
  iRegex=""の時は全て返却。
  リスト取得後、std:sort()でソートして返却する。

注意事項
  正規表現のマッチング処理はstd::wregexとregex_matchにより実装。
  MSVC 2015とMinGW 4.9.2は、サロゲートペアに非対応なので注意。

§ getThreadId()

std::string const& theolizer::ThreadGuard::getThreadId ( )
inline

スレッドID返却

test_tool.h385 行目に定義があります。

§ incrementFailCount()

THEOLIZER_INTERNAL_DLL void theolizer::incrementFailCount ( )

テスト結果のFAIL数をインクリメントする

§ initResult()

THEOLIZER_INTERNAL_DLL void theolizer::initResult ( )

テスト集計初期化

§ makeScopeExit()

template<typename tReleaser >
internal::ScopeExit<tReleaser> theolizer::makeScopeExit ( tReleaser &&  iReleaser)
noexcept

ScopeExitファクトリ

test_tool.h186 行目に定義があります。

§ on()

static bool theolizer::DisplayPass::on ( )
static

PASS結果表示の状態を返却する

§ operator<<() [1/5]

THEOLIZER_INTERNAL_DLL std::ostream& operator<< ( std::ostream &  iOStream,
char  iChar 
)

char型を数値として出力する

§ operator<<() [2/5]

THEOLIZER_INTERNAL_DLL std::ostream& operator<< ( std::ostream &  iOStream,
signed char  iSChar 
)

signed char型を数値として出力する

§ operator<<() [3/5]

THEOLIZER_INTERNAL_DLL std::ostream& operator<< ( std::ostream &  iOStream,
unsigned char  iUChar 
)

unsgined char型を数値として出力する

§ operator<<() [4/5]

template<typename tEnum , THEOLIZER_INTERNAL_OVERLOAD((std::is_enum< tEnum >::value)) >
std::ostream& operator<< ( std::ostream &  iOStream,
tEnum  iEnum 
)

scoped enum型表示補助

test_tool.h90 行目に定義があります。

§ operator<<() [5/5]

THEOLIZER_INTERNAL_DLL std::ostream& operator<< ( std::ostream &  iOStream,
std::type_info const &   
)

type_info型を型名へ変換して表示する

§ operator=()

ThreadGuard& theolizer::ThreadGuard::operator= ( ThreadGuard &&  iTheread)
inline

ムーブ演算子

test_tool.h372 行目に定義があります。

§ PrepareDir()

theolizer::PrepareDir::PrepareDir ( std::string const &  iDirPath,
bool  iIsNoDelete = false 
)

コンストラクタ

§ printResult()

THEOLIZER_INTERNAL_DLL bool theolizer::printResult ( char const *  iTitle = nullptr)

テスト結果を表示する

§ removeFile()

THEOLIZER_INTERNAL_DLL void theolizer::removeFile ( u8string const &  iFilePath)

ファイルの削除

指定ファイルが無くても正常終了する。 iFilePathがフォルダの場合何もしない。

§ setWritePermission()

THEOLIZER_INTERNAL_DLL void theolizer::setWritePermission ( const u8string iPath,
bool  iIsEnable 
)

アクセス許可設定

ownerの書き込み許可をセット/クリアする

§ ThreadGuard() [1/4]

theolizer::ThreadGuard::ThreadGuard ( )
inlinenoexcept

デフォルト・コンストラクタ

test_tool.h347 行目に定義があります。

§ ThreadGuard() [2/4]

template<class Fn , class... Args>
theolizer::ThreadGuard::ThreadGuard ( Fn &&  fn,
Args &&...  args 
)
inline

汎用コンストラクタ

test_tool.h355 行目に定義があります。

§ ThreadGuard() [3/4]

theolizer::ThreadGuard::ThreadGuard ( const ThreadGuard )
delete

コピー禁止

§ ThreadGuard() [4/4]

theolizer::ThreadGuard::ThreadGuard ( ThreadGuard &&  iThread)
inlinenoexcept

ムーブ可

test_tool.h365 行目に定義があります。

§ ~PrepareDir()

theolizer::PrepareDir::~PrepareDir ( )

デストラクタ

§ ~ThreadGuard()

theolizer::ThreadGuard::~ThreadGuard ( )
inline

デストラクタ

test_tool.h381 行目に定義があります。