From 1ab35d89127253993cfe844e49c44051a3e0d464 Mon Sep 17 00:00:00 2001 From: Mathieu Champlon Date: Fri, 4 Sep 2015 22:56:29 +0200 Subject: [PATCH] Fixed build errors with Boost 1.59 --- build/vc100/.gitignore | 1 + build/vc100/turtle.vcxproj | 12 ++++++ build/vc100/turtle_test.vcxproj | 24 ++++++------ doc/changelog.qbk | 1 + include/turtle/constraints.hpp | 61 +++++++++++++++++++++++++++---- include/turtle/detail/cleanup.hpp | 2 +- include/turtle/error.hpp | 17 ++++++++- 7 files changed, 95 insertions(+), 23 deletions(-) diff --git a/build/vc100/.gitignore b/build/vc100/.gitignore index bacfd8c..b6f8d86 100644 --- a/build/vc100/.gitignore +++ b/build/vc100/.gitignore @@ -1,3 +1,4 @@ /*.opensdf /*.sdf /*.suo +*.ipch \ No newline at end of file diff --git a/build/vc100/turtle.vcxproj b/build/vc100/turtle.vcxproj index cc9280e..2fc8585 100644 --- a/build/vc100/turtle.vcxproj +++ b/build/vc100/turtle.vcxproj @@ -102,6 +102,18 @@ ../../out/vc100/$(Configuration)/libraries/$(ProjectName)\ ../../out/vc100_x64/$(Configuration)/libraries/$(ProjectName)\ + + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + + + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + + + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + + + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + /Zm179 %(AdditionalOptions) diff --git a/build/vc100/turtle_test.vcxproj b/build/vc100/turtle_test.vcxproj index 82f561e..a6aed44 100644 --- a/build/vc100/turtle_test.vcxproj +++ b/build/vc100/turtle_test.vcxproj @@ -88,26 +88,26 @@ ../../out/vc100_x64/$(Configuration)/tests/$(ProjectName)\ - c:\dev\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; - c:\dev\lib\vc100_x64;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + C:\dev\home\boost\stage\lib;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib - c:\dev\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; - c:\dev\lib\vc100_x64;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + C:\dev\home\boost\stage\lib;$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib - c:\dev\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; - c:\dev\lib\vc100_x64;$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64; + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + C:\dev\home\boost\stage\lib;$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64; - c:\dev\include;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; - c:\dev\lib\vc100_x64;$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64; + C:\dev\home\boost;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; + C:\dev\home\boost\stage\lib;$(VCInstallDir)lib\amd64;$(VCInstallDir)atlmfc\lib\amd64;$(WindowsSdkDir)lib\x64; /Zm172 %(AdditionalOptions) Disabled - ../..; ../../include;%(AdditionalIncludeDirectories) + ../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -140,7 +140,7 @@ /Zm172 %(AdditionalOptions) Disabled - ../..;../../include;%(AdditionalIncludeDirectories) + ../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -172,7 +172,7 @@ /Zm162 %(AdditionalOptions) MaxSpeed - ../..; ../../include;%(AdditionalIncludeDirectories) + ../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Default MultiThreadedDLL @@ -205,7 +205,7 @@ /Zm162 %(AdditionalOptions) MaxSpeed - ../..;../../include;%(AdditionalIncludeDirectories) + ../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Default MultiThreadedDLL diff --git a/doc/changelog.qbk b/doc/changelog.qbk index f5dcd63..87bec51 100644 --- a/doc/changelog.qbk +++ b/doc/changelog.qbk @@ -11,6 +11,7 @@ Not yet released * Fixed missing thread synchronization in mock::sequence +* Fixed build errors with Boost 1.59 [endsect] diff --git a/include/turtle/constraints.hpp b/include/turtle/constraints.hpp index c0ce82c..6a814a2 100644 --- a/include/turtle/constraints.hpp +++ b/include/turtle/constraints.hpp @@ -13,7 +13,9 @@ #include "constraint.hpp" #include "detail/addressof.hpp" #include +#include #include +#include #include #include @@ -30,24 +32,67 @@ namespace mock MOCK_NARY_CONSTRAINT( less_equal, 1, ( expected ), actual <= expected ) MOCK_NARY_CONSTRAINT( greater_equal, 1, ( expected ), actual >= expected ) +#if BOOST_VERSION < 105900 + +# define MOCK_SMALL() \ + boost::test_tools::check_is_small( actual, tolerance ) +# define MOCK_PERCENT_TOLERANCE() \ + boost::test_tools::check_is_close( \ + actual, \ + expected, \ + boost::test_tools::percent_tolerance( tolerance ) ) +# define MOCK_FRACTION_TOLERANCE() \ + boost::test_tools::check_is_close( \ + actual, \ + expected, \ + boost::test_tools::fraction_tolerance( tolerance ) ) + +#else // BOOST_VERSION < 105900 + +namespace detail +{ + template< typename T, typename Tolerance > + bool is_small( const T& t, const Tolerance& tolerance ) + { + return boost::math::fpc::small_with_tolerance< T >( tolerance )( t ); + } + + template< typename T1, typename T2, typename Tolerance > + bool is_close( const T1& t1, const T2& t2, const Tolerance& tolerance ) + { + typedef typename boost::common_type< T1, T2 >::type common_type; + return boost::math::fpc::close_at_tolerance< common_type >( + tolerance, boost::math::fpc::FPC_STRONG )( t1, t2 ); + } +} + +# define MOCK_SMALL() \ + detail::is_small( actual, tolerance ) +# define MOCK_PERCENT_TOLERANCE() \ + detail::is_close( actual, expected, boost::math::fpc::percent_tolerance( tolerance ) ) +# define MOCK_FRACTION_TOLERANCE() \ + detail::is_close( actual, expected, tolerance ) + +#endif // BOOST_VERSION < 105900 + #ifdef BOOST_MSVC # pragma push_macro( "small" ) # undef small #endif - MOCK_NARY_CONSTRAINT( small, 1, ( expected ), - ( boost::test_tools::check_is_small( actual, expected ) ) ) + MOCK_NARY_CONSTRAINT( small, 1, ( tolerance ), + ( MOCK_SMALL() ) ) #ifdef BOOST_MSVC # pragma pop_macro( "small" ) #endif MOCK_NARY_CONSTRAINT( close, 2, ( expected, tolerance ), - ( boost::test_tools::check_is_close( - actual, expected, - boost::test_tools::percent_tolerance( tolerance ) ) ) ) + ( MOCK_PERCENT_TOLERANCE() ) ) + MOCK_NARY_CONSTRAINT( close_fraction, 2, ( expected, tolerance ), - ( boost::test_tools::check_is_close( - actual, expected, - boost::test_tools::fraction_tolerance( tolerance ) ) ) ) + ( MOCK_FRACTION_TOLERANCE() ) ) + +#undef MOCK_PERCENT_TOLERANCE +#undef MOCK_FRACTION_TOLERANCE #ifdef BOOST_MSVC # pragma push_macro( "near" ) diff --git a/include/turtle/detail/cleanup.hpp b/include/turtle/detail/cleanup.hpp index ca5d212..87cc5fb 100644 --- a/include/turtle/detail/cleanup.hpp +++ b/include/turtle/detail/cleanup.hpp @@ -28,7 +28,7 @@ namespace detail mock::reset(); } }; - BOOST_GLOBAL_FIXTURE( cleanup ) + BOOST_GLOBAL_FIXTURE( cleanup ); } } // mock diff --git a/include/turtle/error.hpp b/include/turtle/error.hpp index 7b04ad3..95be42c 100644 --- a/include/turtle/error.hpp +++ b/include/turtle/error.hpp @@ -12,6 +12,7 @@ #include "config.hpp" #ifdef MOCK_USE_BOOST_TEST #include "exception.hpp" +#include #include #include #include @@ -39,7 +40,13 @@ namespace mock static void fail( const char* message, const Context& context, const char* file = "unknown location", int line = 0 ) { - boost::unit_test::framework::assertion_result( false ); + boost::unit_test::framework::assertion_result( +#if BOOST_VERSION < 105900 + false +#else + boost::unit_test::AR_FAILED +#endif + ); boost::unit_test::unit_test_log << boost::unit_test::log::begin( file, static_cast< std::size_t >( line ) ) @@ -51,7 +58,13 @@ namespace mock template< typename Context > static void call( const Context& context, const char* file, int line ) { - boost::unit_test::framework::assertion_result( true ); + boost::unit_test::framework::assertion_result( +#if BOOST_VERSION < 105900 + true +#else + boost::unit_test::AR_PASSED +#endif + ); boost::unit_test::unit_test_log << boost::unit_test::log::begin( file, static_cast< std::size_t >( line ) )