]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/test/test/test-organization-ts/datasets-test/xrange-test.cpp
1 // (C) Copyright Gennadiy Rozental 2011-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$
12 // Description : tests singleton dataset
13 // ***************************************************************************
16 #include <boost/test/unit_test.hpp>
17 #include <boost/test/data/monomorphic/generators/xrange.hpp>
18 #include <boost/test/data/monomorphic/join.hpp>
19 #include <boost/test/data/for_each_sample.hpp>
20 namespace data
=boost::unit_test::data
;
22 #include "datasets-test.hpp"
24 //____________________________________________________________________________//
26 BOOST_AUTO_TEST_CASE( test_single_range
)
28 BOOST_TEST( data::xrange( 5 ).size() == 5 );
29 BOOST_TEST( data::xrange( 3. ).size() == 3 );
30 BOOST_CHECK_THROW( data::xrange( -5 ), std::logic_error
);
31 BOOST_CHECK_THROW( data::xrange( 0 ), std::logic_error
);
33 BOOST_TEST( data::xrange( 1, 5 ).size() == 4 );
34 BOOST_TEST( data::xrange( -5, 0 ).size() == 5 );
35 BOOST_TEST( data::xrange( 1., 7.5 ).size() == 7 );
36 BOOST_CHECK_THROW( data::xrange( 0, 0 ), std::logic_error
);
37 BOOST_CHECK_THROW( data::xrange( 3, 1 ), std::logic_error
);
39 BOOST_TEST( data::xrange( 3, 9, 2 ).size() == 3 );
40 BOOST_TEST( data::xrange( 5, 0, -1 ).size() == 5 );
41 BOOST_TEST( data::xrange( 1, 10, 2 ).size() == 5 );
42 BOOST_TEST( data::xrange( 1, 10, 3 ).size() == 3 );
43 BOOST_TEST( data::xrange( 1, 10, 8 ).size() == 2 );
44 BOOST_TEST( data::xrange( 0., 3., 0.4 ).size() == 8 );
45 BOOST_TEST( data::xrange( 1e-6, 2.e
-6, 1e-9 ).size() == 1000 );
47 BOOST_TEST( data::xrange
<int>(( data::begin
= 9, data::end
= 15 )).size() == 6 );
48 BOOST_TEST( data::xrange
<double>(( data::step
= 0.5, data::end
= 3 )).size() == 6 );
51 data::for_each_sample( data::xrange( 3 ), [&c
](int a
) {
52 BOOST_TEST( a
== c
++ );
56 data::for_each_sample( data::xrange( 1, 10, 2 ), [&c
](int a
) {
62 //____________________________________________________________________________//
64 BOOST_AUTO_TEST_CASE( test_range_join
)
66 auto ds
= data::xrange( 1, 4 ) + data::xrange( 7, 11 );
68 BOOST_TEST( ds
.size() == 7 );
72 data::for_each_sample( ds
, ic
);
73 BOOST_TEST( ic
.m_value
== 7 );
75 int arr
[] = {1,2,3,7,8,9,10};
79 data::for_each_sample( ds
, [&c
,exp
](int a
) {
80 BOOST_TEST( a
== exp
[c
++] );
84 //____________________________________________________________________________//