IUTEST(Hoge, ThrowValue) { IUTEST_ASSERT_THROW_VALUE_EQ(throw 2, int, 2); IUTEST_ASSERT_THROW_VALUE_STREQ(throw "error", const char *, "error"); }
int ReturnTest(void) { IUTEST_ASSERT_TRUE(true) << ::iutest::AssertionReturn<int>(-1); return 0; }
IUTEST(Hoge, Inform) { IUTEST_INFORM_TRUE(IsEven(2)); }
IUTEST(Hoge, Size) { IUTEST_ASSUME_EQ(4, sizeof(int)); }
IUTTEST(NullCheck, Sample) { int* p = (int*)malloc(4); IUTEST_ASSERT_TRUE(p != NULL); __analysis_assume(p != NULL); *p = 1; IUTEST_ASSERT_EQ(1, *p); }しかし、このような __analysis_assume は冗長な記述です。
IUTEST(NullCheck, Sample) { int* p = (int*)malloc(4); IUTEST_ASSERT_NOTNULL(p); *p = 1; IUTEST_ASSERT_EQ(1, *p); }
void TestFunction(int x, int y) { IUTEST_ASSERT_EQ(x, y); } IUTEST_PMZ(ParamMethodTest, EQ, TestFunction, 0, 0); IUTEST_PMZ(ParamMethodTest, EQ, TestFunction, 1, 1);
//class AnyParamtest : public ::iutest::TestWithParamテストフィクスチャを省略した場合のパラメータ型は、::iutest::any になっています。{}; // 不要 IUTEST_AP(AnyParamTest, Test) { const int value = GetParam (); IUTEST_ASSERT_EQ(0, value); } IUTEST_INSTANTIATE_TEST_CASE_AP(My1, AnyParamTest, ::iutest::Values(0));
IUTEST_INSTANTIATE_TEST_CASE_P(A, TestP , ::iutest::Pairwise( ::iutest::Bool(), ::iutest::Values(1, 2), ::iutest::Values(10, 11) ) );
IUTEST_INSTANTIATE_TEST_CASE_P(A, TestP , ::iutest::RandomValues( 5 ) );RandomValues の第一引数にパラメータの総数を指定します。(第二引数に乱数シードを指定可能)
bool Filter(int n) { return n != 100 && n != 500 && n != 1000; } IUTEST_INSTANTIATE_TEST_CASE_P(A, TestP , ::iutest::ValuesGen( 5, ::iutest::RandomGenerator(&Filter) ) );
IUTEST_INSTANTIATE_TEST_CASE_P(A1, TestP , ::iutest::Concat( ::iutest::Range(1, 10), ::iutest::Range(101, 110) ) ); IUTEST_INSTANTIATE_TEST_CASE_P(A2, TestP , ::iutest::Concat( ::iutest::Range(1, 10), ::iutest::Bool() ) );operator + の場合
IUTEST_INSTANTIATE_TEST_CASE_P(A1, TestP , ::iutest::Range(1, 10) + ::iutest::Range(101, 110) ); IUTEST_INSTANTIATE_TEST_CASE_P(A2, TestP , ::iutest::Range(1, 10) + ::iutest::Bool() + ::iutest::Values(99, 88, 77) ) );
IUTEST_PACKAGE(TestPackageA) { IUTEST(Test, Hoge) { IUTEST_ASSERT_TRUE(true); } } IUTEST_PACKAGE(TestPackageB) { IUTEST(Test, Hoge) { IUTEST_ASSERT_TRUE(true); } }
IUTEST(IUTEST_JAPANESE_NAME(あいうえお), IUTEST_JAPANESE_NAME(かきくけこ)) { }テストフィクスチャを利用する場合は、IUTEST_JAPANESE_NAME_F マクロを使用してください。
class FixedTest : public ::iutest::Test {}; IUTEST_F(IUTEST_JAPANESE_NAME_F(FixedTest, あいうえお), IUTEST_JAPANESE_NAME(かきくけこ)) { }※ IUTEST_TYPED_TEST_P は未対応です。
class Hoge { int m_x; }; IUTEST_MAKE_PEEP(int Hoge::*, Hoge, m_x); IUTEST(ProdTest, Peep) { Hoge hoge; IUTEST_PEEP_GET(hoge, Hoge, m_x) = 4; IUTEST_ASSERT_EQ(4, IUTEST_PEEP_GET(hoge, Hoge, m_x)); }
//#include "iutest.hpp" #include "gtest/iutest_switch.hpp" // iutest.hpp の代わりに iutest_switch.hpp を使用する