From d0779f68d82731797eb6e574f44ff27728be8e4d Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Mon, 16 Sep 2002 21:43:26 +0000 Subject: [PATCH] added more tests [SVN r15390] --- test/aux_/debug_print.cpp | 23 ++++++++++++++++++ test/aux_/has_distance.cpp | 38 ++++++++++++++++++++++++++++++ test/aux_/has_rebind.cpp | 30 ++++++++++++++++++++++++ test/aux_/typeof.cpp | 48 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 test/aux_/debug_print.cpp create mode 100644 test/aux_/has_distance.cpp create mode 100644 test/aux_/has_rebind.cpp create mode 100644 test/aux_/typeof.cpp diff --git a/test/aux_/debug_print.cpp b/test/aux_/debug_print.cpp new file mode 100644 index 0000000..ccee062 --- /dev/null +++ b/test/aux_/debug_print.cpp @@ -0,0 +1,23 @@ +//----------------------------------------------------------------------------- +// boost mpl/test/typeof.cpp source file +// See http://www.boost.org for updates, documentation, and revision history. +//----------------------------------------------------------------------------- +// +// Copyright (c) 2002 +// Aleksey Gurtovoy +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without fee, +// provided that the above copyright notice appears in all copies and +// that both the copyright notice and this permission notice appear in +// supporting documentation. No representations are made about the +// suitability of this software for any purpose. It is provided "as is" +// without express or implied warranty. + +#include "boost/mpl/aux_/debug_print.hpp" + +int main() +{ + BOOST_MPL_AUX_DEBUG_PRINT(int); + return 0; +} diff --git a/test/aux_/has_distance.cpp b/test/aux_/has_distance.cpp new file mode 100644 index 0000000..e562e46 --- /dev/null +++ b/test/aux_/has_distance.cpp @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------------- +// boost mpl/test/aux_/has_distance.cpp source file +// See http://www.boost.org for updates, documentation, and revision history. +//----------------------------------------------------------------------------- +// +// Copyright (c) 2000-02 +// Aleksey Gurtovoy +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without fee, +// provided that the above copyright notice appears in all copies and +// that both the copyright notice and this permission notice appear in +// supporting documentation. No representations are made about the +// suitability of this software for any purpose. It is provided "as is" +// without express or implied warranty. + +#include "boost/mpl/aux_/has_distance.hpp" +#include "boost/mpl/aux_/has_distance_spec.hpp" +#include "boost/static_assert.hpp" + +namespace mpl = boost::mpl; + +struct iter0 {}; +template< typename T > struct iter1 +{ + template< typename > struct BOOST_MPL_AUX_ITERATOR_DISTANCE; +}; + +namespace boost { namespace mpl { +BOOST_MPL_AUX_HAS_DISTANCE_SPEC(1,iter1) +}} + +int main() +{ + BOOST_STATIC_ASSERT(!mpl::aux::has_distance::value); + BOOST_STATIC_ASSERT(mpl::aux::has_distance< iter1 >::value); + return 0; +} diff --git a/test/aux_/has_rebind.cpp b/test/aux_/has_rebind.cpp new file mode 100644 index 0000000..4fa88ac --- /dev/null +++ b/test/aux_/has_rebind.cpp @@ -0,0 +1,30 @@ +//----------------------------------------------------------------------------- +// boost mpl/test/aux_/has_rebind.cpp source file +// See http://www.boost.org for updates, documentation, and revision history. +//----------------------------------------------------------------------------- +// +// Copyright (c) 2000-02 +// Aleksey Gurtovoy +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without fee, +// provided that the above copyright notice appears in all copies and +// that both the copyright notice and this permission notice appear in +// supporting documentation. No representations are made about the +// suitability of this software for any purpose. It is provided "as is" +// without express or implied warranty. + +#include "boost/mpl/aux_/has_rebind.hpp" +#include "boost/static_assert.hpp" + +namespace mpl = boost::mpl; + +struct f1 {}; +struct f2 { struct rebind; }; + +int main() +{ + BOOST_STATIC_ASSERT(!mpl::aux::has_rebind::value); + BOOST_STATIC_ASSERT(mpl::aux::has_rebind::value); + return 0; +} diff --git a/test/aux_/typeof.cpp b/test/aux_/typeof.cpp new file mode 100644 index 0000000..a8fd698 --- /dev/null +++ b/test/aux_/typeof.cpp @@ -0,0 +1,48 @@ +//----------------------------------------------------------------------------- +// boost mpl/test/typeof.cpp source file +// See http://www.boost.org for updates, documentation, and revision history. +//----------------------------------------------------------------------------- +// +// Copyright (c) 2002 +// Aleksey Gurtovoy +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without fee, +// provided that the above copyright notice appears in all copies and +// that both the copyright notice and this permission notice appear in +// supporting documentation. No representations are made about the +// suitability of this software for any purpose. It is provided "as is" +// without express or implied warranty. + +#include "boost/mpl/aux_/typeof.hpp" +#include "boost/mpl/assert_is_same.hpp" + +namespace { +template< typename T > struct identity { static T type(); }; +} + +#define TYPEOF_CHECK(T) \ + BOOST_MPL_ASSERT_IS_SAME( \ + BOOST_MPL_AUX_TYPEOF(identity::type()) \ + , T \ + ) \ +/**/ + +int main() +{ + TYPEOF_CHECK(bool); + TYPEOF_CHECK(signed char); + TYPEOF_CHECK(unsigned char); + TYPEOF_CHECK(char); + TYPEOF_CHECK(short); + TYPEOF_CHECK(unsigned short); + TYPEOF_CHECK(int); + TYPEOF_CHECK(unsigned int); + TYPEOF_CHECK(long); + TYPEOF_CHECK(unsigned long); + TYPEOF_CHECK(float); + TYPEOF_CHECK(double); + TYPEOF_CHECK(long double); + + return 0; +}