nlib

基本的な単体テスト用マクロが定義されています。 [詳解]

#include <string.h>
#include <new>
#include <string>
#include "nn/nlib/Config.h"
#include "nn/nlib/testing/Printer.h"
#include "nn/nlib/UniquePtr.h"
#include "nn/nlib/SimpleSingleton.h"
#include "nn/nlib/Nflags.h"

[ソースコード]

クラス

class  nn::nlib::testing::Environment
 このクラスを継承してグローバルに実行されるSetUp()TearDown()を定義します。 [詳解]
 

名前空間

 nn::nlib
 共通して使われる機能やプラットフォームへの依存度が高い機能が実装されます。 nlib Platform APIs も御覧ください。nlib_nsはエイリアスです。
 
 nn::nlib::testing
 C++のコードをテストするためのフレームワークです。testingライブラリの機能一覧 の説明も御覧ください。
 

マクロ定義

#define FRIEND_TEST(test_case, test_name)   friend class NLIB_TESTING_CLASS_NAME_(test_case, test_name)
 テストコードがプライベートメンバにアクセスできるように記述します。 [詳解]
 
テスト関数の定義
#define TEST(test_case_name, specific_test_name)   NLIB_TEST_(test_case_name, specific_test_name, ::nlib_ns::testing::Test)
 テスト関数を定義します。 [詳解]
 
#define TEST_F(test_fixture_name, specific_test_name)   NLIB_TEST_(test_fixture_name, specific_test_name, test_fixture_name)
 テストフィクスチャを利用したテスト関数を定義します。 [詳解]
 
テストの開始
#define RUN_ALL_TESTS()   ::nlib_ns::testing::TestInfo::Run()
 テストを開始します。 [詳解]
 
無条件の成功と失敗
#define FAIL()
 無条件で失敗して現在実行中の関数から抜けます。
 
#define SUCCEED()
 何もしません。
 
条件式のテスト(ASSERT_*)
#define ASSERT_TRUE(expr)   NLIB_TESTING_BOOLEAN_IMPL_(expr, true, false, NLIB_TESTING_FATAL_)
 conditiontrueであるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_FALSE(expr)   NLIB_TESTING_BOOLEAN_IMPL_(!(expr), false, true, NLIB_TESTING_FATAL_)
 conditionfalseであるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
条件式のテスト(EXPECT_*)
#define EXPECT_TRUE(expr)   NLIB_TESTING_BOOLEAN_IMPL_(expr, true, false, NLIB_TESTING_NONFATAL_)
 ASSERT_TRUE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_FALSE(expr)   NLIB_TESTING_BOOLEAN_IMPL_(!(expr), false, true, NLIB_TESTING_NONFATAL_)
 ASSERT_FALSE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
値のテスト(ASSERT_*)
#define ASSERT_EQ(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompEQ, expected, actual)
 expected == actual であるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。 [詳解]
 
#define ASSERT_NE(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompNE, expected, actual)
 val1 != val2 であるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_LE(val1, val2)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompLE, val1, val2)
 val1 <= val2 であるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_LT(val1, val2)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompLT, val1, val2)
 val1 < val2 であるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_GE(val1, val2)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompGE, val1, val2)
 val1 >= val2 であるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_GT(val1, val2)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompGT, val1, val2)
 val1 > val2 であるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_STREQ(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompStrEq, expected, actual)
 2つのC文字列が等しいかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_STRNE(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompStrNe, expected, actual)
 2つのC文字列が等しくないかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_STRCASEEQ(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompStrCaseEq, expected, actual)
 2つのC文字列が等しいかどうかをアルファベットの大文字小文字の違いを無視して検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_STRCASENE(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompStrCaseNe, expected, actual)
 2つのC文字列が等しくないかどうかをアルファベットの大文字小文字の違いを無視して検証します。失敗した場合は現在実行中の関数から抜けます。
 
#define ASSERT_FLOAT_EQ(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompFloatEq, expected, actual)
 2つのfloat値がほぼ等しいかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。 [詳解]
 
#define ASSERT_DOUBLE_EQ(expected, actual)   NLIB_TESTING_ASSERT_HELPER_(::nlib_ns::testing::CompDoubleEq, expected, actual)
 2つのdouble値がほぼ等しいかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。 [詳解]
 
#define ASSERT_NEAR(val1, val2, abs_error)
 val1val2 の差がabs_error 以内に収まるかどうかを検証します。失敗した場合は現在実行中の関数から抜けます。
 
値のテスト(EXPECT_*)
#define EXPECT_EQ(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompEQ, expected, actual)
 ASSERT_EQ()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_NE(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompNE, expected, actual)
 ASSERT_NE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_LE(val1, val2)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompLE, val1, val2)
 ASSERT_LT()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_LT(val1, val2)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompLT, val1, val2)
 ASSERT_LT()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_GE(val1, val2)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompGE, val1, val2)
 ASSERT_GE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_GT(val1, val2)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompGT, val1, val2)
 ASSERT_GT()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_STREQ(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompStrEq, expected, actual)
 ASSERT_STREQ()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_STRNE(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompStrNe, expected, actual)
 ASSERT_STRNE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_STRCASEEQ(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompStrCaseEq, expected, actual)
 ASSERT_STRCASEEQ()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_STRCASENE(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompStrCaseNe, expected, actual)
 ASSERT_STRCASENE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_FLOAT_EQ(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompFloatEq, expected, actual)
 ASSERT_FLOAT_EQ()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_DOUBLE_EQ(expected, actual)   NLIB_TESTING_EXPECT_HELPER_(::nlib_ns::testing::CompDoubleEq, expected, actual)
 ASSERT_DOUBLE_EQ()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
#define EXPECT_NEAR(val1, val2, abs_error)
 ASSERT_NEAR()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 
サブルーチンでのアサートを利用する場合に利用
#define SCOPED_TRACE(msg)
 失敗メッセージを表示する際にスコープの位置の手がかりとなるメッセージを追加します。 [詳解]
 
#define ASSERT_NO_FATAL_FAILURE(statement)
 サブルーチン(statement )内でASSERT_*が失敗していないかどうか検証します。失敗した場合は現在実行中の関数から抜けます。 [詳解]
 
#define EXPECT_NO_FATAL_FAILURE(statement)
 EXPECT_NO_FATAL_FAILURE()と同様ですが、失敗した場合でも現在実行中の関数から抜けません。
 

関数

void nn::nlib::testing::InitNintendoTest (int *argc, char **argv)
 テストプログラムのコマンドラインオプションを処理します。
 
void nn::nlib::testing::InitNintendoTest (int *argc, wchar_t **argv)
 テストプログラムのコマンドラインオプションを処理します。
 
Environment * nn::nlib::testing::AddGlobalTestEnvironment (Environment *env)
 Environment へのポインタを渡して、全てのテストの前と後に実行されるコードを登録します。
 
AssertionResult nn::nlib::testing::FloatLE (const char *expr1, const char *expr2, float val1, float val2)
 val1 <= val2を検証します。[ASSERT|EXPECT]_PRED_FORMAT2に組み込んで利用します。 [詳解]
 
AssertionResult nn::nlib::testing::DoubleLE (const char *expr1, const char *expr2, double val1, double val2)
 val1 <= val2を検証します。[ASSERT|EXPECT]_PRED_FORMAT2に組み込んで利用します。 [詳解]
 

詳解

基本的な単体テスト用マクロが定義されています。

NTest.h に定義があります。