]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/test/test/framework-ts/run-by-name-or-label-test.cpp
1 // (C) Copyright Gennadiy Rozental 2003-2015.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
6 // See http://www.boost.org/libs/test for the library home page.
10 // Version : $Revision: 62023 $
12 // Description : unit test for class properties facility
13 // ***************************************************************************
16 #define BOOST_TEST_MODULE Boost.Test run by name/label implementation test
17 #include <boost/test/unit_test.hpp>
18 #include <boost/test/unit_test_parameters.hpp>
19 #include <boost/test/tree/test_case_counter.hpp>
20 #include <boost/test/tree/traverse.hpp>
22 namespace utf
= boost::unit_test
;
33 //____________________________________________________________________________//
36 test_count( utf::test_suite
* master_ts
, char const** argv
, int argc
, unsigned expected
)
38 argc
/= sizeof(char*);
40 BOOST_TEST_INFO( argv
[1] );
42 BOOST_TEST_INFO( argv
[2] );
44 utf::runtime_config::init( argc
, (char**)argv
);
45 utf::framework::impl::setup_for_execution( *master_ts
);
47 utf::test_case_counter tcc
;
48 utf::traverse_test_tree( master_ts
->p_id
, tcc
);
49 BOOST_TEST( tcc
.p_count
== expected
);
52 BOOST_AUTO_TEST_CASE( test_run_by_name
)
54 utf::test_suite
* master_ts
= BOOST_TEST_SUITE("local master");
56 utf::test_suite
* ts1
= BOOST_TEST_SUITE("ts1");
57 ts1
->add( BOOST_TEST_CASE( &C
) );
58 ts1
->add( BOOST_TEST_CASE( &D
) );
60 utf::test_suite
* ts2
= BOOST_TEST_SUITE("ts2");
61 ts2
->add( BOOST_TEST_CASE( &A
) );
62 ts2
->add( BOOST_TEST_CASE( &C
) );
63 ts2
->add( BOOST_TEST_CASE( &longnameA
) );
66 master_ts
->add( BOOST_TEST_CASE( &A
) );
67 master_ts
->add( BOOST_TEST_CASE( &B
) );
68 master_ts
->add( BOOST_TEST_CASE( &longnameA
) );
69 master_ts
->add( BOOST_TEST_CASE( &Blongname
) );
70 master_ts
->add( ts2
);
72 master_ts
->p_default_status
.value
= utf::test_unit::RS_ENABLED
;
73 utf::framework::finalize_setup_phase( master_ts
->p_id
);
75 utf::framework::impl::setup_for_execution( *master_ts
);
76 utf::test_case_counter tcc
;
77 utf::traverse_test_tree( master_ts
->p_id
, tcc
);
78 BOOST_TEST( tcc
.p_count
== 9U );
82 char const* argv
[] = { "a.exe", "--run_test=*" };
83 test_count( master_ts
, argv
, sizeof(argv
), 9 );
87 char const* argv
[] = { "a.exe", "--run_test=!*" };
88 test_count( master_ts
, argv
, sizeof(argv
), 0 );
92 char const* argv
[] = { "a.exe", "--run_test=*/*" };
93 test_count( master_ts
, argv
, sizeof(argv
), 5 );
97 char const* argv
[] = { "a.exe", "--run_test=!*/*" };
98 test_count( master_ts
, argv
, sizeof(argv
), 4 );
102 char const* argv
[] = { "a.exe", "--run_test=*/*/*" };
103 test_count( master_ts
, argv
, sizeof(argv
), 2 );
106 char const* argv
[] = { "a.exe", "--run_test=!*/*/*" };
107 test_count( master_ts
, argv
, sizeof(argv
), 7 );
111 char const* argv
[] = { "a.exe", "--run_test=klmn" };
112 test_count( master_ts
, argv
, sizeof(argv
), 0 );
116 char const* argv
[] = { "a.exe", "--run_test=!klmn" };
117 test_count( master_ts
, argv
, sizeof(argv
), 9 );
121 char const* argv
[] = { "a.exe", "--run_test=A" };
122 test_count( master_ts
, argv
, sizeof(argv
), 1 );
126 char const* argv
[] = { "a.exe", "--run_test=!A" };
127 test_count( master_ts
, argv
, sizeof(argv
), 8 );
131 char const* argv
[] = { "a.exe", "--run_test=*A" };
132 test_count( master_ts
, argv
, sizeof(argv
), 2 );
136 char const* argv
[] = { "a.exe", "--run_test=!*A" };
137 test_count( master_ts
, argv
, sizeof(argv
), 7 );
141 char const* argv
[] = { "a.exe", "--run_test=B*" };
142 test_count( master_ts
, argv
, sizeof(argv
), 2 );
146 char const* argv
[] = { "a.exe", "--run_test=!B*" };
147 test_count( master_ts
, argv
, sizeof(argv
), 7 );
151 char const* argv
[] = { "a.exe", "--run_test=*ngn*" };
152 test_count( master_ts
, argv
, sizeof(argv
), 2 );
156 char const* argv
[] = { "a.exe", "--run_test=ts2" };
157 test_count( master_ts
, argv
, sizeof(argv
), 5 );
161 char const* argv
[] = { "a.exe", "--run_test=!ts2" };
162 test_count( master_ts
, argv
, sizeof(argv
), 4 );
166 char const* argv
[] = { "a.exe", "--run_test=ts2/*" };
167 test_count( master_ts
, argv
, sizeof(argv
), 5 );
171 char const* argv
[] = { "a.exe", "--run_test=!ts2/*" };
172 test_count( master_ts
, argv
, sizeof(argv
), 4 );
176 char const* argv
[] = { "a.exe", "--run_test=ts2/C" };
177 test_count( master_ts
, argv
, sizeof(argv
), 1 );
181 char const* argv
[] = { "a.exe", "--run_test=!ts2/C" };
182 test_count( master_ts
, argv
, sizeof(argv
), 8 );
186 char const* argv
[] = { "a.exe", "--run_test=ts2/*A" };
187 test_count( master_ts
, argv
, sizeof(argv
), 2 );
191 char const* argv
[] = { "a.exe", "--run_test=!ts2/*A" };
192 test_count( master_ts
, argv
, sizeof(argv
), 7 );
196 char const* argv
[] = { "a.exe", "--run_test=ts2/ts1" };
197 test_count( master_ts
, argv
, sizeof(argv
), 2 );
201 char const* argv
[] = { "a.exe", "--run_test=!ts2/ts1" };
202 test_count( master_ts
, argv
, sizeof(argv
), 7 );
206 char const* argv
[] = { "a.exe", "--run_test=ts2/ts1/C" };
207 test_count( master_ts
, argv
, sizeof(argv
), 1 );
211 char const* argv
[] = { "a.exe", "--run_test=!ts2/ts1/C" };
212 test_count( master_ts
, argv
, sizeof(argv
), 8 );
216 char const* argv
[] = { "a.exe", "--run_test=ts2/ts1/*D*" };
217 test_count( master_ts
, argv
, sizeof(argv
), 1 );
221 char const* argv
[] = { "a.exe", "--run_test=!ts2/ts1/*D*" };
222 test_count( master_ts
, argv
, sizeof(argv
), 8 );
226 char const* argv
[] = { "a.exe", "--run_test=A,B" };
227 test_count( master_ts
, argv
, sizeof(argv
), 2 );
231 char const* argv
[] = { "a.exe", "--run_test=!A,B" };
232 test_count( master_ts
, argv
, sizeof(argv
), 7 );
236 char const* argv
[] = { "a.exe", "--run_test=*A,B" };
237 test_count( master_ts
, argv
, sizeof(argv
), 3 );
241 char const* argv
[] = { "a.exe", "--run_test=!*A,B" };
242 test_count( master_ts
, argv
, sizeof(argv
), 6 );
246 char const* argv
[] = { "a.exe", "--run_test=ts2/C,ts1" };
247 test_count( master_ts
, argv
, sizeof(argv
), 3 );
251 char const* argv
[] = { "a.exe", "--run_test=!ts2/C,ts1" };
252 test_count( master_ts
, argv
, sizeof(argv
), 6 );
256 char const* argv
[] = { "a.exe", "--run_test=ts2/C,ts1/D" };
257 test_count( master_ts
, argv
, sizeof(argv
), 1 );
261 char const* argv
[] = { "a.exe", "--run_test=!ts2/C,ts1/D" };
262 test_count( master_ts
, argv
, sizeof(argv
), 8 );
266 char const* argv
[] = { "a.exe", "--run_test=A", "--run_test=B" };
267 test_count( master_ts
, argv
, sizeof(argv
), 2 );
271 char const* argv
[] = { "a.exe", "--run_test=!A", "--run_test=!B" };
272 test_count( master_ts
, argv
, sizeof(argv
), 7 );
276 char const* argv
[] = { "a.exe", "--run_test=A", "--run_test=ts2/ts1/C" };
277 test_count( master_ts
, argv
, sizeof(argv
), 2 );
281 char const* argv
[] = { "a.exe", "--run_test=A", "--run_test=ts2/ts1/C,D" };
282 test_count( master_ts
, argv
, sizeof(argv
), 3 );
286 char const* argv
[] = { "a.exe", "--run_test=A", "--run_test=ts2/ts1/C,D:longnameA" };
287 test_count( master_ts
, argv
, sizeof(argv
), 4 );
291 char const* argv
[] = { "a.exe", "--run_test=ts2", "--run_test=!ts2/*A" };
292 test_count( master_ts
, argv
, sizeof(argv
), 3 );
296 //____________________________________________________________________________//
298 BOOST_AUTO_TEST_CASE( test_run_by_label
)
302 utf::test_suite
* master_ts
= BOOST_TEST_SUITE("local master");
304 utf::test_suite
* ts1
= BOOST_TEST_SUITE("ts1");
305 ts1
->add_label( "f2" );
306 ts1
->add( tc
=BOOST_TEST_CASE( &C
) );
307 tc
->add_label( "L1" );
308 ts1
->add( tc
=BOOST_TEST_CASE( &D
) );
309 tc
->add_label( "L1" );
310 tc
->add_label( "l2" );
312 utf::test_suite
* ts2
= BOOST_TEST_SUITE("ts2");
313 ts2
->add_label( "FAST" );
314 ts2
->add( tc
=BOOST_TEST_CASE( &A
) );
315 tc
->add_label( "L1" );
316 ts2
->add( BOOST_TEST_CASE( &C
) );
317 ts2
->add( BOOST_TEST_CASE( &longnameA
) );
320 master_ts
->add( BOOST_TEST_CASE( &A
) );
321 master_ts
->add( BOOST_TEST_CASE( &B
) );
322 master_ts
->add( tc
=BOOST_TEST_CASE( &longnameA
) );
323 tc
->add_label( "f2" );
324 master_ts
->add( BOOST_TEST_CASE( &Blongname
) );
325 master_ts
->add( ts2
);
328 master_ts
->p_default_status
.value
= utf::test_unit::RS_ENABLED
;
329 utf::framework::finalize_setup_phase( master_ts
->p_id
);
332 char const* argv
[] = { "a.exe", "--run_test=@L1" };
333 test_count( master_ts
, argv
, sizeof(argv
), 3 );
337 char const* argv
[] = { "a.exe", "--run_test=!@INV" };
338 test_count( master_ts
, argv
, sizeof(argv
), 9 );
342 char const* argv
[] = { "a.exe", "--run_test=!@L1" };
343 test_count( master_ts
, argv
, sizeof(argv
), 6 );
347 char const* argv
[] = { "a.exe", "--run_test=@l2" };
348 test_count( master_ts
, argv
, sizeof(argv
), 1 );
352 char const* argv
[] = { "a.exe", "--run_test=@inval" };
353 test_count( master_ts
, argv
, sizeof(argv
), 0 );
357 char const* argv
[] = { "a.exe", "--run_test=@FAST" };
358 test_count( master_ts
, argv
, sizeof(argv
), 5 );
362 char const* argv
[] = { "a.exe", "--run_test=@f2" };
363 test_count( master_ts
, argv
, sizeof(argv
), 3 );
367 char const* argv
[] = { "a.exe", "--run_test=@L1", "--run_test=@l2" };
368 test_count( master_ts
, argv
, sizeof(argv
), 3 );
372 char const* argv
[] = { "a.exe", "--run_test=@L1", "--run_test=!@l2" };
373 test_count( master_ts
, argv
, sizeof(argv
), 2 );
377 //____________________________________________________________________________//
379 BOOST_AUTO_TEST_CASE( test_dependency_handling
)
396 utf::test_suite
* master_ts
= BOOST_TEST_SUITE("local master");
398 utf::test_suite
* ts1
= BOOST_TEST_SUITE("ts1");
399 ts1
->add( BOOST_TEST_CASE( &A
) );
400 ts1
->add( tcB
=BOOST_TEST_CASE( &B
) );
402 utf::test_suite
* ts2
= BOOST_TEST_SUITE("ts2");
403 ts2
->add( BOOST_TEST_CASE( &C
) );
404 ts2
->add( tc
=BOOST_TEST_CASE( &D
) );
405 tc
->depends_on( ts1
);
407 utf::test_suite
* ts3
= BOOST_TEST_SUITE("ts3");
408 ts3
->add( BOOST_TEST_CASE( &E
) );
409 ts3
->add( tc
=BOOST_TEST_CASE( &F
) );
410 tcB
->depends_on( tc
);
412 utf::test_suite
* ts4
= BOOST_TEST_SUITE("ts4");
415 master_ts
->add( ts2
);
416 master_ts
->add( ts3
);
417 master_ts
->add( ts4
);
419 master_ts
->p_default_status
.value
= utf::test_unit::RS_ENABLED
;
420 utf::framework::finalize_setup_phase( master_ts
->p_id
);
423 char const* argv
[] = { "a.exe", "--run_test=ts2/C" };
424 test_count( master_ts
, argv
, sizeof(argv
), 1 );
428 char const* argv
[] = { "a.exe", "--run_test=ts3" };
429 test_count( master_ts
, argv
, sizeof(argv
), 2 );
433 char const* argv
[] = { "a.exe", "--run_test=ts2/C" };
434 test_count( master_ts
, argv
, sizeof(argv
), 1 );
438 char const* argv
[] = { "a.exe", "--run_test=ts4/ts1/B" };
439 test_count( master_ts
, argv
, sizeof(argv
), 2 );
443 char const* argv
[] = { "a.exe", "--run_test=ts4/ts1" };
444 test_count( master_ts
, argv
, sizeof(argv
), 3 );
448 char const* argv
[] = { "a.exe", "--run_test=ts2" };
449 test_count( master_ts
, argv
, sizeof(argv
), 5 );
453 char const* argv
[] = { "a.exe", "--run_test=!ts3/F" };
454 test_count( master_ts
, argv
, sizeof(argv
), 5 );
458 char const* argv
[] = { "a.exe", "--run_test=!*/ts1" };
459 test_count( master_ts
, argv
, sizeof(argv
), 4 );
463 //____________________________________________________________________________//