From 06cb0cac426eb1a7c6c2e8083a83bfb8a5bb7092 Mon Sep 17 00:00:00 2001 From: Jonathan Turkanis Date: Mon, 9 Feb 2004 22:11:13 +0000 Subject: [PATCH] modified to include header mulitple times [SVN r1950] --- select_by_size_test.cpp | 77 +++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/select_by_size_test.cpp b/select_by_size_test.cpp index 30a90d1..86301b3 100644 --- a/select_by_size_test.cpp +++ b/select_by_size_test.cpp @@ -1,10 +1,34 @@ -#include -#include +// (C) Copyright Jonathan Turkanis 2004. +// Permission to copy, use, modify, sell and distribute this software +// is granted provided this copyright notice appears in all copies. This +// software is provided "as is" without express or implied warranty, and +// with no claim as to its suitability for any purpose. +// Test program for + +#include +#include + +// Include "select_by_size.hpp" with BOOST_SELECT_BY_SIZE_CASES undefined. +#include using boost::utility::case_; -case_<0> helper(bool); -case_<1> helper(int); +case_ helper(bool); +case_ helper(int); + +struct test1 { + // Define static bool constants v0 and v1. + BOOST_SELECT_BY_SIZE(bool, v0, helper(true)); + BOOST_SELECT_BY_SIZE(bool, v1, helper(0)); + + BOOST_STATIC_ASSERT(v0 == false); + BOOST_STATIC_ASSERT(v1 == true); +}; + +// Include "select_by_size.hpp" a second time, defining more cases. +#define BOOST_SELECT_BY_SIZE_CASES 8 +#include + case_<2> helper(unsigned); case_<3> helper(long); case_<4> helper(unsigned long); @@ -12,7 +36,8 @@ case_<5> helper(float); case_<6> helper(double); case_<7> helper(const char*); -struct test { +struct test2 { + // Define static int constants v0 through v7. BOOST_SELECT_BY_SIZE(int, v0, helper(true)); BOOST_SELECT_BY_SIZE(int, v1, helper(0)); BOOST_SELECT_BY_SIZE(int, v2, helper(0U)); @@ -21,37 +46,15 @@ struct test { BOOST_SELECT_BY_SIZE(int, v5, helper(0.0F)); BOOST_SELECT_BY_SIZE(int, v6, helper(0.0)); BOOST_SELECT_BY_SIZE(int, v7, helper("hello")); + + BOOST_STATIC_ASSERT(v0 == 0); + BOOST_STATIC_ASSERT(v1 == 1); + BOOST_STATIC_ASSERT(v2 == 2); + BOOST_STATIC_ASSERT(v3 == 3); + BOOST_STATIC_ASSERT(v4 == 4); + BOOST_STATIC_ASSERT(v5 == 5); + BOOST_STATIC_ASSERT(v6 == 6); + BOOST_STATIC_ASSERT(v7 == 7); }; -#include - -int main() -{ - using namespace boost::utility; - - // Causes problems on Borland 5.x - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(true)) >::value == 0 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(0)) >::value == 1 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(0U)) >::value == 2 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(0L)) >::value == 3 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(0UL)) >::value == 4 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(0.0F)) >::value == 5 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper(0.0)) >::value == 6 ); - //BOOST_STATIC_ASSERT( select_by_size< sizeof(helper("hello")) >::value == 7 ); - - BOOST_STATIC_ASSERT(test::v0 == 0); - BOOST_STATIC_ASSERT(test::v1 == 1); - BOOST_STATIC_ASSERT(test::v2 == 2); - BOOST_STATIC_ASSERT(test::v3 == 3); - BOOST_STATIC_ASSERT(test::v4 == 4); - BOOST_STATIC_ASSERT(test::v5 == 5); - BOOST_STATIC_ASSERT(test::v6 == 6); - BOOST_STATIC_ASSERT(test::v7 == 7); - - return 0; -} - - - - - +int main() { return 0; }