columns.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // Copyright (c) 2001-2011 Hartmut Kaiser
  2. //
  3. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #include <boost/config/warning_disable.hpp>
  6. #include <boost/detail/lightweight_test.hpp>
  7. #include <boost/spirit/include/karma_char.hpp>
  8. #include <boost/spirit/include/karma_generate.hpp>
  9. #include <boost/spirit/include/karma_numeric.hpp>
  10. #include <boost/spirit/include/karma_directive.hpp>
  11. #include <boost/spirit/include/karma_nonterminal.hpp>
  12. #include <boost/spirit/include/karma_action.hpp>
  13. #include <boost/spirit/include/phoenix_core.hpp>
  14. #include "test.hpp"
  15. using namespace spirit_test;
  16. namespace karma = boost::spirit::karma;
  17. ///////////////////////////////////////////////////////////////////////////////
  18. int
  19. main()
  20. {
  21. {
  22. using karma::columns;
  23. using karma::int_;
  24. std::vector<int> v;
  25. for (int i = 0; i < 11; ++i)
  26. v.push_back(i);
  27. BOOST_TEST(test("01234\n56789\n10\n", columns[*int_], v));
  28. BOOST_TEST(test_delimited("0 1 2 3 4 \n5 6 7 8 9 \n10 \n", columns[*int_]
  29. , v, karma::space));
  30. }
  31. {
  32. using karma::columns;
  33. using karma::int_;
  34. std::vector<int> v;
  35. for (int i = 0; i < 11; ++i)
  36. v.push_back(i);
  37. BOOST_TEST(test("012\n345\n678\n910\n", columns(3)[*int_], v));
  38. BOOST_TEST(test_delimited("0 1 2 \n3 4 5 \n6 7 8 \n9 10 \n"
  39. , columns(3)[*int_], v, karma::space));
  40. }
  41. {
  42. using karma::columns;
  43. using karma::int_;
  44. using boost::phoenix::ref;
  45. std::vector<int> v;
  46. for (int i = 0; i < 11; ++i)
  47. v.push_back(i);
  48. int count = 3;
  49. BOOST_TEST(test("012\n345\n678\n910\n", columns(ref(count))[*int_], v));
  50. BOOST_TEST(test_delimited("0 1 2 \n3 4 5 \n6 7 8 \n9 10 \n"
  51. , columns(val(ref(count)))[*int_], v, karma::space));
  52. }
  53. {
  54. using karma::columns;
  55. using karma::int_;
  56. using karma::lit;
  57. std::vector<int> v;
  58. for (int i = 0; i < 11; ++i)
  59. v.push_back(i);
  60. BOOST_TEST(test("01234\t56789\t10\t", columns(lit('\t'))[*int_], v));
  61. BOOST_TEST(test_delimited("0 1 2 3 4 \t5 6 7 8 9 \t10 \t"
  62. , columns(lit('\t'))[*int_], v, karma::space));
  63. }
  64. {
  65. using karma::columns;
  66. using karma::int_;
  67. using karma::lit;
  68. std::vector<int> v;
  69. for (int i = 0; i < 11; ++i)
  70. v.push_back(i);
  71. BOOST_TEST(test("012\t345\t678\t910\t", columns(3, lit('\t'))[*int_], v));
  72. BOOST_TEST(test_delimited("0 1 2 \t3 4 5 \t6 7 8 \t9 10 \t"
  73. , columns(3, lit('\t'))[*int_], v, karma::space));
  74. }
  75. return boost::report_errors();
  76. }