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));
}
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);
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_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 を使用する