2
0
mirror of https://github.com/boostorg/test.git synced 2026-01-30 08:22:12 +00:00
Files
test/example/filtering_example.cpp
Gennadiy Rozental 4b478b53c6 Major rework of filtering approach
the status (enabled/disabled) is split on default and run status. Default is deduced once at the end of setup phase. Run state is deduced before each test tree execution based on default and supplied filters
  disabled nodes are not removed from tree and can be reenabled dynamically
  dependency filtering is moved completely to execution phase into a precondition check step
  dependency tree is validated for loops
  dependency rank is respected in order of node execution now
  dependency works properly with random test execution

added support for selected vs. enabler filters

properly time test suites now

split initialization ans setup phase finalization into separate methods

--list_content parameter is now accepts optional string format name. Default is HRF. We now also support DOT output
  HRF output format is improved to include some test unit attributes (including description)

test suite is considered failing now if it has skipped test case

some messages produced changes to be syntactically correct: failed => has failed for example

properly report precondition failures in log messages

number of spelling errors fixed

small bug in random.hpp is fixed
2015-01-29 02:31:35 -05:00

436 lines
8.9 KiB
C++

// (C) Copyright Gennadiy Rozental 2015.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/test for the library home page.
#define BOOST_TEST_MODULE filtering test
#include <boost/test/unit_test.hpp>
namespace bt=boost::unit_test;
const std::string test1v("test1");
const std::string test2v("test2");
const std::string test3v("test3");
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::disabled()
- bt::description( "initially disabled suite 1")
- bt::label( "label1" )
- bt::label( "label2" )
)
BOOST_AUTO_TEST_SUITE( s1 )
BOOST_TEST_DECORATOR(
- bt::enabled()
- bt::description( "initially enabled case s1/t1")
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s1" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::description( "initially defaulted case s1/t2")
- bt::expected_failures( 1 )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s1" == test2v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::description( "initially defaulted case s1/t3")
)
BOOST_AUTO_TEST_CASE( test3 )
{
BOOST_TEST( "s1" == test3v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_TEST_DECORATOR(
- bt::disabled()
- bt::label( "label1" )
- bt::expected_failures( 3 )
)
BOOST_AUTO_TEST_SUITE( s2 )
BOOST_TEST_DECORATOR(
- bt::description( "initially defaulted case s2/t1")
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s2" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::enabled()
- bt::description( "initially enabled case s2/t2")
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s2" == test2v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::description( "initially defaulted case s2/t3")
)
BOOST_AUTO_TEST_CASE( test3 )
{
BOOST_TEST( "s2" == test3v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_TEST_DECORATOR(
- bt::disabled()
)
BOOST_AUTO_TEST_SUITE( s3 )
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s3" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::timeout( 10 )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s3" == test2v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::enabled()
)
BOOST_AUTO_TEST_CASE( test3 )
{
BOOST_TEST( "s3" == test3v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s3/s15" )
- bt::description( "test suite which depends on another test suite")
)
BOOST_AUTO_TEST_SUITE( s14 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s2" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s14" == test1v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE( s15 )
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s15" == test1v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE( s4 )
BOOST_TEST_DECORATOR(
- bt::disabled()
- bt::label( "label2" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s4" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s4/test1" )
- bt::description( "test case which depends on disabled s4/t1")
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s4" == test2v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s4/test2" )
- bt::description( "test case which depends on enabled s4/t2, but indirectly on disabled s4/t1")
)
BOOST_AUTO_TEST_CASE( test3 )
{
BOOST_TEST( "s4" == test3v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
#if 0
BOOST_AUTO_TEST_SUITE( s5 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s5/test3" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s5" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s5/test1" )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s5" == test2v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s5/test2" )
)
BOOST_AUTO_TEST_CASE( test3 )
{
BOOST_TEST( "s5" == test3v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
#endif
BOOST_AUTO_TEST_SUITE( s6 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s6/test3" )
- bt::description( "test case which depends on enabled s6/t3")
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s6" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s6/test1" )
- bt::description( "test case which depends on enabled s6/t1")
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s6" == test2v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_CASE( test3 )
{
BOOST_TEST( "s6" == test3v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::description( "test suite with all test cases disabled")
)
BOOST_AUTO_TEST_SUITE( s9 )
BOOST_TEST_DECORATOR(
- bt::disabled()
- bt::label( "label1" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s9" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::disabled()
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s9" == test2v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
#if 0
BOOST_AUTO_TEST_SUITE( s7 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s8/test1" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s7" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s7/test1" )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s7" == test2v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE( s8 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s8/test2" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s8" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s7/test2" )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s8" == test2v );
}
//____________________________________________________________________________//
`
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE( s10 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s11" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s10" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s10/test1" )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s10" == test2v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE( s11 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s11/test2" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s11" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::depends_on( "s10" )
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s11" == test2v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
#endif
BOOST_AUTO_TEST_SUITE( s12 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s13" )
- bt::description( "test test case which depends on test suite with all test cases skipped")
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s12" == test1v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE( s13 )
BOOST_TEST_DECORATOR(
- bt::depends_on( "s13/test2" )
)
BOOST_AUTO_TEST_CASE( test1 )
{
BOOST_TEST( "s13" == test1v );
}
//____________________________________________________________________________//
BOOST_TEST_DECORATOR(
- bt::disabled()
)
BOOST_AUTO_TEST_CASE( test2 )
{
BOOST_TEST( "s13" == test2v );
}
//____________________________________________________________________________//
BOOST_AUTO_TEST_SUITE_END()
// EOF