From 8fac3c9f2f78665afc3b893a7f657d779e8ea97f Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 10 Sep 2016 19:15:47 +0300 Subject: [PATCH] Add one more dynamic_cast test, fold back _test3 into test2. --- test/Jamfile.v2 | 1 - test/pointer_cast_test2.cpp | 24 ++++++++++++++++++ test/pointer_cast_test3.cpp | 49 ------------------------------------- 3 files changed, 24 insertions(+), 50 deletions(-) delete mode 100644 test/pointer_cast_test3.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index bf38dae..bb4d04e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -188,7 +188,6 @@ import testing ; [ run sp_hash_test3.cpp ] [ run pointer_cast_test2.cpp ] - [ run pointer_cast_test3.cpp ] [ compile-fail pointer_cast_st_fail.cpp ] [ compile-fail pointer_cast_st_fail2.cpp ] diff --git a/test/pointer_cast_test2.cpp b/test/pointer_cast_test2.cpp index a74058b..279c4ab 100644 --- a/test/pointer_cast_test2.cpp +++ b/test/pointer_cast_test2.cpp @@ -119,7 +119,21 @@ static void test_const_cast() BOOST_TEST_EQ( p2.get(), q1 ); } +#if !defined( BOOST_MSVC ) || BOOST_MSVC >= 1900 + { + std::unique_ptr p1( new int[ 1 ] ); + int const * q1 = p1.get(); + + std::unique_ptr p2 = boost::const_pointer_cast( std::move( p1 ) ); + + BOOST_TEST( p1.get() == 0 ); + BOOST_TEST_EQ( p2.get(), q1 ); + } + +#endif + + { std::unique_ptr p1( new int[ 1 ] ); int * q1 = p1.get(); @@ -151,6 +165,16 @@ static void test_dynamic_cast() BOOST_TEST( p1.get() == 0 ); BOOST_TEST_EQ( p2.get(), q1 ); } + + { + std::unique_ptr p1( new B ); + B * q1 = p1.get(); + + std::unique_ptr p2 = boost::dynamic_pointer_cast( std::move( p1 ) ); + + BOOST_TEST( p2.get() == 0 ); + BOOST_TEST_EQ( p1.get(), q1 ); + } } static void test_reinterpret_cast() diff --git a/test/pointer_cast_test3.cpp b/test/pointer_cast_test3.cpp deleted file mode 100644 index c2b19f9..0000000 --- a/test/pointer_cast_test3.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// -// pointer_cast_test3.cpp - a test for unique_ptr casts -// -// Copyright 2016 Peter Dimov -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt -// - -#include - -#if defined( BOOST_NO_CXX11_SMART_PTR ) - -int main() -{ - return 0; -} - -#else - -#include -#include -#include - -// This test fails on msvc-10.0, 11.0, 12.0 because -// their unique_ptr implementation can't compile the -// initialization of p1 - -static void test_const_cast() -{ - { - std::unique_ptr p1( new int[ 1 ] ); - int const * q1 = p1.get(); - - std::unique_ptr p2 = boost::const_pointer_cast( std::move( p1 ) ); - - BOOST_TEST( p1.get() == 0 ); - BOOST_TEST_EQ( p2.get(), q1 ); - } -} - -int main() -{ - test_const_cast(); - return boost::report_errors(); -} - -#endif