Boost logo

Boost Users :

Subject: Re: [Boost-users] Unit Tests and function calling
From: Richard (legalize+jeeves_at_[hidden])
Date: 2014-02-19 14:10:52

[Please do not mail me a copy of your followup]

boost-users_at_[hidden] spake the secret code
<CANO4BK-7KsF+siUdw6jr4JvQNSfrQ5hfWY7bO7e2TMZrXHDMSA_at_[hidden]> thusly:

>Just wanted a second opinion on how best to handle calling functions which
>invoke BOOST_REQUIRE and BOOST_CHECK type logic.
>For example, if I have a test like:
>void stuff( ... )
> BOOST_CHECK( ... );
>BOOST_AUTO_TEST( check_stuff )
> stuff( case1 );
> stuff( case2 );
> stuff( case3 );
>in the CLF log case at least, I only see which lines in stuff failed, but
>not which which case.
>I can change things so that we have:
>bool stuff( ... )
> bool result = true;
> if ( ( result = require-predicate ) == true )
> result = check-predicate;
> return result;
>BOOST_AUTO_TEST( check_stuff )
> BOOST_CHECK( stuff( case1 ) );
> BOOST_CHECK( stuff( case2 ) );
> BOOST_CHECK( stuff( case3 ) );
>but then I lose the info in the logs over which predicates are failing and
>it's generally a bit nasty :).

Use the 2nd form of the code you have posted and have your custom
predicate return boost::test_tools::predicate_result instead of bool.
Then you can build as an elaborate failure message as you need in
order to understand the cause of a failing test case.

You get the benefits of a custom predicate, proper reporting of the
failure location in the test case, and a useful diagnostic message
when it fails.

See these pages:

You have been able to do this for a long time, but it was never
properly documented and I don't know why the maintainer of Boost.Test
never mentions it when these questions about custom assertions come

"The Direct3D Graphics Pipeline" free book <>
     The Computer Graphics Museum <>
         The Terminals Wiki <>
  Legalize Adulthood! (my blog) <>

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at