[/ Copyright 2010, 2011 Beman Dawes Copyright 2013 Ion Gaztanaga Copyright 2014-2019 Peter Dimov Copyright 2017 Kohei Takahashi Distributed under the Boost Software License, Version 1.0. See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt ] [section:lightweight_test lightweight_test] [simplesect Authors] * Peter Dimov * Beman Dawes [endsimplesect] [section Header ] The header `` is a lightweight test framework. It's useful for writing Boost regression tests for components that are dependencies of Boost.Test. When using `lightweight_test.hpp`, *do not forget* to `return boost::report_errors()` from `main`. [section Synopsis] `` #define BOOST_TEST(expression) /*unspecified*/ #define BOOST_TEST_NOT(expression) /*unspecified*/ #define BOOST_ERROR(message) /*unspecified*/ #define BOOST_TEST_EQ(expr1, expr2) /*unspecified*/ #define BOOST_TEST_NE(expr1, expr2) /*unspecified*/ #define BOOST_TEST_LT(expr1, expr2) /*unspecified*/ #define BOOST_TEST_LE(expr1, expr2) /*unspecified*/ #define BOOST_TEST_GT(expr1, expr2) /*unspecified*/ #define BOOST_TEST_GE(expr1, expr2) /*unspecified*/ #define BOOST_TEST_CSTR_EQ(expr1, expr2) /*unspecified*/ #define BOOST_TEST_CSTR_NE(expr1, expr2) /*unspecified*/ #define BOOST_TEST_ALL_EQ(begin1, end1, begin2, end2) /* unspecified */ #define BOOST_TEST_ALL_WITH(begin1, end1, begin2, end2, predicate) /* unspecified */ #define BOOST_TEST_THROWS(expr, excep) /*unspecified*/ namespace boost { int report_errors(); } `` [endsect] [section BOOST_TEST] `` BOOST_TEST(expression) `` If expression is false increases the error count and outputs a message containing `expression`. [endsect] [section BOOST_TEST_NOT] `` BOOST_TEST_NOT(expression) `` If expression is true increases the error count and outputs a message containing `!(expression)`. [endsect] [section BOOST_ERROR] `` BOOST_ERROR(message) `` Increases error count and outputs a message containing `message`. [endsect] [section BOOST_TEST_EQ] `` BOOST_TEST_EQ(expr1, expr2) `` If `expr1 == expr2` is not true increases the error count and outputs a message containing both expressions. [endsect] [section BOOST_TEST_NE] `` BOOST_TEST_NE(expr1, expr2) `` If `expr1 != expr2` is not true increases the error count and outputs a message containing both expressions. [endsect] [section BOOST_TEST_LT] `` BOOST_TEST_LT(expr1, expr2) `` If `expr1 < expr2` is not true increases the error count and outputs a message containing both expressions. [endsect] [section BOOST_TEST_LE] `` BOOST_TEST_LE(expr1, expr2) `` If `expr1 <= expr2` is not true increases the error count and outputs a message containing both expressions. [endsect] [section BOOST_TEST_GT] `` BOOST_TEST_GT(expr1, expr2) `` If `expr1 > expr2` is not true increases the error count and outputs a message containing both expressions. [endsect] [section BOOST_TEST_GE] `` BOOST_TEST_GE(expr1, expr2) `` If `expr1 >= expr2` is not true increases the error count and outputs a message containing both expressions. [endsect] [section BOOST_TEST_CSTR_EQ] `` BOOST_TEST_CSTR_EQ(expr1, expr2) `` Specialization of `BOOST_TEST_EQ` which interprets `expr1` and `expr2` as pointers to null-terminated byte strings (C strings). If `std::strcmp(expr1, expr2) != 0`, increase the error count and output a message containing both expressions. [endsect] [section BOOST_TEST_CSTR_NE] `` BOOST_TEST_CSTR_NE(expr1, expr2) `` Specialization of `BOOST_TEST_NE` which interprets `expr1` and `expr2` as pointers to null-terminated byte strings (C strings). If `std::strcmp(expr1, expr2) == 0`, increase the error count and output a message containing both expressions. [endsect] [section BOOST_TEST_ALL_EQ] `` BOOST_TEST_ALL_EQ(begin1, end1, begin2, end2) `` Compares the content of two sequences. If they have different sizes, or if any pairwise element differs, increases the error count and outputs a message containing at most 8 differing elements. [endsect] [section BOOST_TEST_ALL_WITH] `` BOOST_TEST_ALL_WITH(begin1, end1, begin2, end2, predicate) `` Compares the content of two sequences. If they have different sizes, or if any pairwise element do not fulfill the binary predicate, increases the error count and outputs a message containing at most 8 differing elements. [endsect] [section BOOST_TEST_THROWS] `` BOOST_TEST_THROWS(expr, excep) `` If `BOOST_NO_EXCEPTIONS` is *not* defined and if `expr` does not throw an exception of type `excep`, increases the error count and outputs a message containing the expression. If `BOOST_NO_EXCEPTIONS` is defined, this macro expands to nothing and `expr` is not evaluated. [endsect] [section report_errors] `` int boost::report_errors() `` Return the error count from `main`. [endsect] [section Example] `` #include int sqr( int x ) { return x * x; } int main() { BOOST_TEST( sqr(2) == 4 ); BOOST_TEST_EQ( sqr(-3), 9 ); return boost::report_errors(); } `` [endsect] [endsect] [section Header ] The header `` defines a couple of extra macros for testing compile-time traits that return a boolean value. [section Synopsis] `` #define BOOST_TEST_TRAIT_TRUE((Trait)) /*unspecified*/ #define BOOST_TEST_TRAIT_FALSE((Trait)) /*unspecified*/ #define BOOST_TEST_TRAIT_SAME(Type1, Type2) /*unspecified*/ `` [endsect] [section BOOST_TEST_TRAIT_TRUE] `` BOOST_TEST_TRAIT_TRUE((Trait)) `` If `Trait::value != true` increases the error count and outputs a message containing `Trait`. Note the double set of parentheses; these enable `Trait` to contain a comma, which is common for templates. [endsect] [section BOOST_TEST_TRAIT_FALSE] `` BOOST_TEST_TRAIT_FALSE((Trait)) `` If `Trait::value != false` increases the error count and outputs a message containing `Trait`. Note the double set of parentheses. [endsect] [section BOOST_TEST_TRAIT_SAME] `` BOOST_TEST_TRAIT_SAME(Type1, Type2) `` If the two types are not the same, increases the error count and outputs a message containing them. This macro requires that the compiler supports variadic macros and `__VA_ARGS__`. (Note that unlike `BOOST_TEST_TRAIT_TRUE` and `BOOST_TEST_TRAIT_FALSE`, this macro only requires a single set of parentheses.) [endsect] [section Example] `` #include #include template struct X { typedef T type; }; using boost::core::is_same; int main() { BOOST_TEST_TRAIT_TRUE(( is_same::type, int> )); BOOST_TEST_TRAIT_SAME( X::type, int ); return boost::report_errors(); } `` [endsect] [endsect] [endsect]