サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0]
#include <vector>
#include <boost/test/included/unit_test.hpp>
using namespace std;
//
// STLのvectorクラステンプレートのテストコードを書いてみました。
//
BOOST_AUTO_TEST_CASE( push_back_test )
{
vector<int> v;
BOOST_CHECK( v.empty() );
BOOST_CHECK_EQUAL( v.size(), 0 );
v.push_back( 1 );
v.push_back( 2 );
BOOST_CHECK( !v.empty() );
BOOST_CHECK_EQUAL( v.size(), 2 );
BOOST_CHECK_EQUAL( v.front(), 1 );
BOOST_CHECK_EQUAL( v.back(), 2 );
}
BOOST_AUTO_TEST_CASE( at_test )
{
vector<char> vi( 100, 'a' );
BOOST_CHECK_THROW( vi.at(100), std::exception );
}
BOOST_AUTO_TEST_CASE( construct_test )
{
vector<int> vi( 100, 3 );
BOOST_CHECK_EQUAL( vi.size(), 100 );
BOOST_CHECK_EQUAL( vi[10], 3 );
vector<double> vd( vi.begin(), vi.end() );
BOOST_CHECK_EQUAL( vd.size(), 100 );
BOOST_CHECK_EQUAL( vd[99], 3.0 );
}
Running 3 test cases... *** No errors detected
テストに失敗があると、次のような表示になります。
Running 3 test cases... test.cpp(24): error in "at_test": exception std::exception is expected *** 1 failure detected in test suite "std::vector test"
コードを書く度に、その動作を検証するテストコードも同時に用意しておく (あるいはむしろ、本体より先にテストコードを書いておく…)という習慣は、 バグの早期発見に役立つと言われています。 で、このテストコードを書いたり繰り返し実行したりする際のサポートとなる フレームワークは、C++では CppUnit などが有名どころ。boostのこのtestライブラリも、 要するにそういうフレームワークの一つです。