Skip to content

Commit

Permalink
Add test_mixed_cxxstd
Browse files Browse the repository at this point in the history
  • Loading branch information
pdimov committed Nov 13, 2018
1 parent 3bc2478 commit c18d123
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 0 deletions.
16 changes: 16 additions & 0 deletions test/Jamfile.v2
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,19 @@ lib throw_bad_function_call : throw_bad_function_call.cpp : <link>shared:<define

run test_bad_function_call.cpp throw_bad_function_call : : : <link>shared : test_bad_function_call_shared ;
run test_bad_function_call.cpp throw_bad_function_call : : : <link>static : test_bad_function_call_static ;

lib mixed_cxxstd : mixed_cxxstd.cpp : <link>shared:<define>MIXED_CXXSTD_DYN_LINK=1 ;

run test_mixed_cxxstd.cpp mixed_cxxstd : : : <link>shared : mixed_cxxstd_shared ;
run test_mixed_cxxstd.cpp mixed_cxxstd : : : <link>static : mixed_cxxstd_static ;

run test_mixed_cxxstd.cpp mixed_cxxstd/<cxxstd>98 : : : <link>shared : mixed_cxxstd_shared_98 ;
run test_mixed_cxxstd.cpp mixed_cxxstd/<cxxstd>98 : : : <link>static : mixed_cxxstd_static_98 ;

run test_mixed_cxxstd.cpp mixed_cxxstd/<cxxstd>0x : : : <link>shared : mixed_cxxstd_shared_0x ;
run test_mixed_cxxstd.cpp mixed_cxxstd/<cxxstd>0x : : : <link>static : mixed_cxxstd_static_0x ;

local check14 = [ check-target-builds mixed_cxxstd/<cxxstd>14 : : <build>no ] ;

run test_mixed_cxxstd.cpp mixed_cxxstd/<cxxstd>14 : : : <link>shared $(check14) : mixed_cxxstd_shared_14 ;
run test_mixed_cxxstd.cpp mixed_cxxstd/<cxxstd>14 : : : <link>static $(check14) : mixed_cxxstd_static_14 ;
42 changes: 42 additions & 0 deletions test/mixed_cxxstd.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

// Copyright 2018 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.

#include <boost/function.hpp>
#include <boost/config.hpp>

#if defined(MIXED_CXXSTD_DYN_LINK)
# define EXPORT BOOST_SYMBOL_EXPORT
#else
# define EXPORT
#endif

EXPORT void call_fn_1( boost::function<void()> const & fn )
{
fn();
}

EXPORT void call_fn_2( boost::function<void(int)> const & fn )
{
fn( 1 );
}

EXPORT void call_fn_3( boost::function<void(int, int)> const & fn )
{
fn( 1, 2 );
}

EXPORT void call_fn_4( boost::function0<void> const & fn )
{
fn();
}

EXPORT void call_fn_5( boost::function1<void, int> const & fn )
{
fn( 1 );
}

EXPORT void call_fn_6( boost::function2<void, int, int> const & fn )
{
fn( 1, 2 );
}
48 changes: 48 additions & 0 deletions test/test_mixed_cxxstd.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

// Copyright 2018 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.

#include <boost/function.hpp>
#include <boost/core/lightweight_test.hpp>

//

void call_fn_1( boost::function<void()> const & fn );
void call_fn_2( boost::function<void(int)> const & fn );
void call_fn_3( boost::function<void(int, int)> const & fn );

void call_fn_4( boost::function0<void> const & fn );
void call_fn_5( boost::function1<void, int> const & fn );
void call_fn_6( boost::function2<void, int, int> const & fn );

//

static int v;

void f0()
{
v = -1;
}

void f1( int x )
{
v = x;
}

void f2( int x, int y )
{
v = x + y;
}

int main()
{
v = 0; call_fn_1( f0 ); BOOST_TEST_EQ( v, -1 );
v = 0; call_fn_2( f1 ); BOOST_TEST_EQ( v, 1 );
v = 0; call_fn_3( f2 ); BOOST_TEST_EQ( v, 3 );

v = 0; call_fn_4( f0 ); BOOST_TEST_EQ( v, -1 );
v = 0; call_fn_5( f1 ); BOOST_TEST_EQ( v, 1 );
v = 0; call_fn_6( f2 ); BOOST_TEST_EQ( v, 3 );

return boost::report_errors();
}

0 comments on commit c18d123

Please sign in to comment.