diff --git a/test/Jamfile b/test/Jamfile index 12407035..76e9d1da 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -112,16 +112,12 @@ import testing ; [ run functional/fused.cpp : : : : ] [ run functional/fused_function_object.cpp : : : : ] [ run functional/fused_procedure.cpp : : : : ] - [ run functional/unfused_generic.cpp : : : : ] - [ run functional/unfused_lvalue_args.cpp : : : : ] - [ run functional/unfused_rvalue_args.cpp : : : : ] + [ run functional/unfused.cpp : : : : ] [ run functional/unfused_typed.cpp : : : : ] [ run functional/make_fused.cpp : : : : ] [ run functional/make_fused_function_object.cpp : : : : ] [ run functional/make_fused_procedure.cpp : : : : ] - [ run functional/make_unfused_generic.cpp : : : : ] - [ run functional/make_unfused_lvalue_args.cpp : : : : ] - [ run functional/make_unfused_rvalue_args.cpp : : : : ] + [ run functional/make_unfused.cpp : : : : ] [ run functional/invoke.cpp : : : : ] [ run functional/invoke_function_object.cpp : : : : ] [ run functional/invoke_procedure.cpp : : : : ] diff --git a/test/functional/make_unfused_lvalue_args.cpp b/test/functional/make_unfused.cpp similarity index 87% rename from test/functional/make_unfused_lvalue_args.cpp rename to test/functional/make_unfused.cpp index af94256c..a6462eb1 100644 --- a/test/functional/make_unfused_lvalue_args.cpp +++ b/test/functional/make_unfused.cpp @@ -6,7 +6,7 @@ http://www.boost.org/LICENSE_1_0.txt). ==============================================================================*/ -#include +#include #include #include @@ -86,16 +86,16 @@ int main() test_func<> f; test_func f_nc; - fusion::result_of::make_unfused_lvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_lvalue_args(f); + fusion::result_of::make_unfused< test_func<> >::type unfused_func = + fusion::make_unfused(f); - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< + fusion::result_of::make_unfused< boost::reference_wrapper< test_func > >::type unfused_func_ref = - fusion::make_unfused_lvalue_args(ref(f_nc)); + fusion::make_unfused(ref(f_nc)); - fusion::result_of::make_unfused_lvalue_args< boost::reference_wrapper< + fusion::result_of::make_unfused< boost::reference_wrapper< test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_lvalue_args(cref(f_nc)); + fusion::make_unfused(cref(f_nc)); BOOST_TEST(unfused_func() == 100); BOOST_TEST(const_(unfused_func)() == 0); diff --git a/test/functional/make_unfused_generic.cpp b/test/functional/make_unfused_generic.cpp deleted file mode 100644 index 4dcc7449..00000000 --- a/test/functional/make_unfused_generic.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to 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 -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_generic< test_func<> >::type unfused_func = - fusion::make_unfused_generic(f); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_generic(ref(f_nc)); - - fusion::result_of::make_unfused_generic< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_generic(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(const_(unfused_func)(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/make_unfused_rvalue_args.cpp b/test/functional/make_unfused_rvalue_args.cpp deleted file mode 100644 index 383fcc0b..00000000 --- a/test/functional/make_unfused_rvalue_args.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to 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 -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -using boost::ref; -using boost::cref; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq &) > - : mpl::if_< mpl::and_< fusion::result_of::empty, RemoveNullary >, - boost::blank, mpl::identity >::type - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -template -inline T const & const_(T const & t) -{ - return t; -} - -int main() -{ - test_func<> f; - test_func f_nc; - - fusion::result_of::make_unfused_rvalue_args< test_func<> >::type unfused_func = - fusion::make_unfused_rvalue_args(f); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func > >::type unfused_func_ref = - fusion::make_unfused_rvalue_args(ref(f_nc)); - - fusion::result_of::make_unfused_rvalue_args< boost::reference_wrapper< - test_func const> >::type unfused_func_c_ref = - fusion::make_unfused_rvalue_args(cref(f_nc)); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(const_(unfused_func)() == 0); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(const_(unfused_func)(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_generic.cpp b/test/functional/unfused_generic.cpp deleted file mode 100644 index f1f86515..00000000 --- a/test/functional/unfused_generic.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to 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 -#include - -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self (Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value; - } - - template - struct result; - - template struct result< Self(T0,T1) > - : mpl::identity - { }; - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_generic< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_generic< test_func<> > unfused_func; - fusion::unfused_generic< test_func & > unfused_func_ref(f); - fusion::unfused_generic< test_func<> const > unfused_func_c; - fusion::unfused_generic< test_func<> > const unfused_func_c2; - fusion::unfused_generic< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lvalue = 12; - // also test const lvalues to pick up compiler deficiencies in that area - int const clvalue_1 = 1; - long const clvalue_2 = 2; - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(lvalue,lvalue,clvalue_1,clvalue_2,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 2*sizeof(long)); - BOOST_TEST(unfused_func_ref(lvalue,lvalue,1,2l,'\007') == 100 + expected); - BOOST_TEST(lvalue == 12 + 4*sizeof(long)); - BOOST_TEST(unfused_func_c(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 6*sizeof(long)); - BOOST_TEST(unfused_func_c2(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 8*sizeof(long)); - BOOST_TEST(unfused_func_c_ref(lvalue,lvalue,1,2l,'\007') == 0 + expected); - BOOST_TEST(lvalue == 12 + 10*sizeof(long)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_lvalue_args.cpp b/test/functional/unfused_lvalue_args.cpp deleted file mode 100644 index e7972499..00000000 --- a/test/functional/unfused_lvalue_args.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to 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 -#include - -#include -#include - -#include - -#include - -#include -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T & elem, long value) const - { - elem += sizeof(T); - return value + elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_lvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_lvalue_args< test_func<> > unfused_func; - fusion::unfused_lvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_lvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_lvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_lvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - long lv1 = 2; int lv2 = 3l; char lv3 = '\007'; - long expected; - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+1*sizeof(lv1) && lv2 == 3+1*sizeof(lv2) && lv3 == 7+1*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_ref(lv1,lv2,lv3) == 100 + expected); - BOOST_TEST(lv1 == 2+2*sizeof(lv1) && lv2 == 3+2*sizeof(lv2) && lv3 == 7+2*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+3*sizeof(lv1) && lv2 == 3+3*sizeof(lv2) && lv3 == 7+3*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c2(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+4*sizeof(lv1) && lv2 == 3+4*sizeof(lv2) && lv3 == 7+4*sizeof(lv3)); - - expected = lv1+sizeof(lv1) + lv2+sizeof(lv2) + lv3+sizeof(lv3); - BOOST_TEST(unfused_func_c_ref(lv1,lv2,lv3) == 0 + expected); - BOOST_TEST(lv1 == 2+5*sizeof(lv1) && lv2 == 3+5*sizeof(lv2) && lv3 == 7+5*sizeof(lv3)); - - return boost::report_errors(); -} - diff --git a/test/functional/unfused_rvalue_args.cpp b/test/functional/unfused_rvalue_args.cpp deleted file mode 100644 index 349bf7fa..00000000 --- a/test/functional/unfused_rvalue_args.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 2006-2007 Tobias Schwinger - - Use modification and distribution are subject to 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 -#include - -#include -#include - -#include - -#include - -#include - -namespace fusion = boost::fusion; -namespace mpl = boost::mpl; - -using boost::noncopyable; -typedef mpl::true_ no_nullary_call; - -template -struct test_func - : Base -{ - template - struct result; - - template - struct result< Self(Seq) > - : mpl::identity - { }; - - template - long operator()(Seq const & seq) const - { - long state = 0; - return fusion::fold(seq, state, fold_op()); - } - - template < typename Seq > - long operator()(Seq const & seq) - { - long state = 100; - return fusion::fold(seq, state, fold_op()); - } - - private: - - struct fold_op - { - typedef long result_type; - - template - long operator()(T const & elem, long value) const - { - return value + sizeof(T) * elem; - } - }; -}; - -void result_type_tests() -{ - using boost::is_same; - - typedef fusion::unfused_rvalue_args< test_func<> > t; - BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value )); - BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value )); -} - -int main() -{ - result_type_tests(); - - test_func f; - fusion::unfused_rvalue_args< test_func<> > unfused_func; - fusion::unfused_rvalue_args< test_func & > unfused_func_ref(f); - fusion::unfused_rvalue_args< test_func<> const > unfused_func_c; - fusion::unfused_rvalue_args< test_func<> > const unfused_func_c2; - fusion::unfused_rvalue_args< test_func const & > unfused_func_c_ref(f); - - BOOST_TEST(unfused_func() == 100); - BOOST_TEST(unfused_func_ref() == 100); - BOOST_TEST(unfused_func_c() == 0); - BOOST_TEST(unfused_func_c2() == 0); - BOOST_TEST(unfused_func_c_ref() == 0); - - static const long expected = 1*sizeof(int) + 2*sizeof(long) + 7*sizeof(char); - BOOST_TEST(unfused_func(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_ref(1,2l,'\007') == 100 + expected); - BOOST_TEST(unfused_func_c(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c2(1,2l,'\007') == 0 + expected); - BOOST_TEST(unfused_func_c_ref(1,2l,'\007') == 0 + expected); - - return boost::report_errors(); -} -