Заголовок<<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();
}