diff options
Diffstat (limited to 'src/boost/libs/mpl/test/advance.cpp')
-rw-r--r-- | src/boost/libs/mpl/test/advance.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/boost/libs/mpl/test/advance.cpp b/src/boost/libs/mpl/test/advance.cpp new file mode 100644 index 00000000..e174ae4c --- /dev/null +++ b/src/boost/libs/mpl/test/advance.cpp @@ -0,0 +1,51 @@ + +// Copyright Aleksey Gurtovoy 2000-2004 +// +// 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) +// +// See http://www.boost.org/libs/mpl for documentation. + +// $Id$ +// $Date$ +// $Revision$ + +#include <boost/mpl/advance.hpp> +#include <boost/mpl/iterator_tags.hpp> +#include <boost/mpl/aux_/test.hpp> + +template< int pos > struct iter +{ + typedef mpl::bidirectional_iterator_tag category; + typedef iter<(pos + 1)> next; + typedef iter<(pos - 1)> prior; + typedef int_<pos> type; +}; + +#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) +namespace boost { namespace mpl { +template< int pos, typename Default > struct tag< iter<pos>,Default > : void_ {}; +}} +#endif + +typedef iter<0> first; +typedef iter<10> last; + +MPL_TEST_CASE() +{ + typedef mpl::advance<first,int_<10> >::type iter1; + typedef advance_c<first,10>::type iter2; + + MPL_ASSERT(( is_same<iter1, last> )); + MPL_ASSERT(( is_same<iter2, last> )); +} + +MPL_TEST_CASE() +{ + typedef mpl::advance<last,int_<-10> >::type iter1; + typedef advance_c<last,-10>::type iter2; + + MPL_ASSERT(( is_same<iter1, first> )); + MPL_ASSERT(( is_same<iter2, first> )); +} |