Заголовок<<boost/core/lightweight_test.hpp>>является легкой тестовой структурой. Он полезен для написания регрессионных тестов Boost для компонентов, которые являются зависимостями Boost. Тест.
При использовании<lightweight_test.hpp>,не забывайтедо<return
boost::report_errors()>из<main>.
#define BOOST_TEST(expression)
#define BOOST_ERROR(message)
#define BOOST_TEST_EQ(expr1, expr2)
#define BOOST_TEST_NE(expr1, expr2)
#define BOOST_TEST_THROWS(expr, excep)
namespace boost
{
int report_errors();
}
BOOST_TEST(expression)
Если выражение ложное, то увеличивается количество ошибок и выводится сообщение, содержащее<expression>.
BOOST_ERROR(message)
Увеличивает количество ошибок и выводит сообщение, содержащее<message>.
BOOST_TEST_EQ(expr1, expr2)
Если<expr1!=
expr2>увеличивает количество ошибок и выводит сообщение, содержащее оба выражения.
BOOST_TEST_NE(expr1, expr2)
Если<expr1==
expr2>увеличивает количество ошибок и выводит сообщение, содержащее оба выражения.
BOOST_TEST_THROWS(expr, excep)
Если<BOOST_NO_EXCEPTIONS>неопределено и если<expr>не бросает исключение типа<excep>, увеличивает количество ошибок и выводит сообщение, содержащее выражение.
Если<BOOST_NO_EXCEPTIONS>определено, этот макрос ни к чему не расширяется и<expr>не оценивается.
int boost::report_errors()
Возвращаем ошибку<main>.
#include <boost/core/lightweight_test.hpp>
int sqr( int x )
{
return x * x;
}
int main()
{
BOOST_TEST( sqr(2) == 4 );
BOOST_TEST_EQ( sqr(-3), 9 );
return boost::report_errors();
}
Заголовок<<boost/core/lightweight_test_trait.hpp>>определяет пару дополнительных макросов для тестирования признаков времени компиляции, которые возвращают значение булева.
#define BOOST_TEST_TRAIT_TRUE((Trait))
#define BOOST_TEST_TRAIT_FALSE((Trait))
BOOST_TEST_TRAIT_TRUE((Trait))
Если<Trait::value!=true>увеличивает количество ошибок и выводит сообщение, содержащее<Trait>. Обратите внимание на двойной набор скобок; они позволяют<Trait>содержать запятую, которая является общей для шаблонов.
BOOST_TEST_TRAIT_FALSE((Trait))
Если<Trait::value!=false>увеличивает количество ошибок и выводит сообщение, содержащее<Trait>. Обратите внимание на двойной набор скобок.
#include <boost/core/lightweight_test_trait.hpp>
#include <boost/core/is_same.hpp>
template<class T, class U> struct X
{
typedef T type;
};
using boost::core::is_same;
int main()
{
BOOST_TEST_TRAIT_TRUE(( is_same<X<int, long>::type, int> ));
return boost::report_errors();
}