test_doc_sequence_convert.cxx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // (C) Copyright Edward Diener 2011-2015
  2. // Use, modification and distribution are subject to the Boost Software License,
  3. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt).
  5. #include <boost/vmd/is_empty_array.hpp>
  6. #include <boost/vmd/is_identifier.hpp>
  7. #include <boost/vmd/is_type.hpp>
  8. #include <boost/vmd/to_array.hpp>
  9. #include <boost/vmd/to_list.hpp>
  10. #include <boost/vmd/to_seq.hpp>
  11. #include <boost/vmd/to_tuple.hpp>
  12. #include <boost/vmd/enum.hpp>
  13. #include <boost/preprocessor/list/at.hpp>
  14. #include <boost/preprocessor/seq/elem.hpp>
  15. #include <boost/preprocessor/tuple/elem.hpp>
  16. #include <boost/preprocessor/variadic/elem.hpp>
  17. #include <boost/detail/lightweight_test.hpp>
  18. int main()
  19. {
  20. #if BOOST_PP_VARIADICS
  21. #define BOOST_VMD_REGISTER_ANID (ANID)
  22. #define SEQUENCE_EMPTY
  23. #define SEQUENCE_SINGLE 35
  24. #define SEQUENCE_SINGLE_2 ANID
  25. #define SEQUENCE_MULTI (0,1) (2)(3)(4)
  26. #define SEQUENCE_MULTI_2 BOOST_VMD_TYPE_SEQ (2,(5,6))
  27. BOOST_TEST(BOOST_VMD_IS_EMPTY_ARRAY(BOOST_VMD_TO_ARRAY(SEQUENCE_EMPTY)));
  28. BOOST_TEST_EQ(BOOST_PP_LIST_AT(BOOST_VMD_TO_LIST(SEQUENCE_SINGLE),0),35);
  29. BOOST_TEST(BOOST_VMD_IS_IDENTIFIER(BOOST_PP_SEQ_ELEM(0,BOOST_VMD_TO_SEQ(SEQUENCE_SINGLE_2))));
  30. BOOST_TEST_EQ(BOOST_PP_TUPLE_ELEM(1,BOOST_PP_TUPLE_ELEM(0,BOOST_VMD_TO_TUPLE(SEQUENCE_MULTI))),1);
  31. BOOST_TEST(BOOST_VMD_IS_TYPE(BOOST_PP_VARIADIC_ELEM(0,BOOST_VMD_ENUM(SEQUENCE_MULTI_2))));
  32. #else
  33. BOOST_ERROR("No variadic macro support");
  34. #endif
  35. return boost::report_errors();
  36. }