• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)
5 
6 //  See http://www.boost.org/libs/test for the library home page.
7 //
8 //  File        : $RCSfile$
9 //
10 //  Version     : $Revision$
11 //
12 //  Description : tests implicit interfaces
13 // ***************************************************************************
14 
15 // Boost.Test
16 #include <boost/test/unit_test.hpp>
17 #include <boost/test/data/monomorphic.hpp>
18 #include <boost/test/data/for_each_sample.hpp>
19 namespace data=boost::unit_test::data;
20 
21 #include "datasets-test.hpp"
22 
23 //____________________________________________________________________________//
24 
BOOST_AUTO_TEST_CASE(test_implicit_for_each)25 BOOST_AUTO_TEST_CASE( test_implicit_for_each )
26 {
27     data::for_each_sample( 2, check_arg_type<int>() );
28 
29     data::for_each_sample( "ch", check_arg_type<char const*>() );
30     data::for_each_sample( 2., check_arg_type<double>() );
31     data::for_each_sample( std::vector<int>( 3 ), check_arg_type<int>() );
32     data::for_each_sample( std::list<double>( 2 ), check_arg_type<double>() );
33     invocation_count ic;
34 
35     ic.m_value = 0;
36     data::for_each_sample( std::vector<int>( 3 ), ic );
37     BOOST_TEST( ic.m_value == 3 );
38 
39     ic.m_value = 0;
40     data::for_each_sample( std::list<double>( 2 ), ic, 1 );
41     BOOST_TEST( ic.m_value == 1 );
42 
43     std::vector<copy_count> samples1( 2 );
44     copy_count::value() = 0; // we do not test the construction of the vector
45     data::for_each_sample( samples1, check_arg_type<copy_count>() );
46     BOOST_TEST( copy_count::value() == 0 );
47 
48     copy_count::value() = 0;
49     copy_count samples2[] = { copy_count(), copy_count() };
50     data::for_each_sample( samples2, check_arg_type<copy_count>() );
51     BOOST_TEST( copy_count::value() == 0 );
52 }
53 
54 //____________________________________________________________________________//
55 
BOOST_AUTO_TEST_CASE(test_implicit_join)56 BOOST_AUTO_TEST_CASE( test_implicit_join )
57 {
58     auto ds = data::make( 5 );
59     BOOST_TEST( (1 + ds).size() == 2 );
60     BOOST_TEST( (ds + 1).size() == 2 );
61 
62     BOOST_TEST( (1 + data::make( 5 )).size() == 2 );
63     BOOST_TEST( (data::make( 5 ) + 1).size() == 2 );
64 }
65 
66 //____________________________________________________________________________//
67 
BOOST_AUTO_TEST_CASE(test_implicit_zip)68 BOOST_AUTO_TEST_CASE( test_implicit_zip )
69 {
70     auto ds = data::make( 5 );
71     BOOST_TEST( (1 ^ ds).size() == 1 );
72     BOOST_TEST( (ds ^ 1).size() == 1 );
73 
74     BOOST_TEST( (1 ^ data::make( 5 )).size() == 1 );
75     BOOST_TEST( (data::make( 5 ) ^ 1).size() == 1 );
76 }
77 
78 //____________________________________________________________________________//
79 
80 // EOF
81 
82 
83