tricky_alignment.cpp 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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_string.hpp>
  9. #include <boost/spirit/include/karma_numeric.hpp>
  10. #include <boost/spirit/include/karma_generate.hpp>
  11. #include <boost/spirit/include/karma_directive.hpp>
  12. #include "test.hpp"
  13. ///////////////////////////////////////////////////////////////////////////////
  14. int
  15. main()
  16. {
  17. using namespace spirit_test;
  18. using namespace boost::spirit;
  19. using namespace boost::spirit::ascii;
  20. {
  21. BOOST_TEST(test("x *****", left_align(15, '*')[left_align[char_('x')]]));
  22. BOOST_TEST(test(" x *****", left_align(15, '*')[center[char_('x')]]));
  23. BOOST_TEST(test(" x*****", left_align(15, '*')[right_align[char_('x')]]));
  24. BOOST_TEST(test("*****x ", right_align(15, '*')[left_align[char_('x')]]));
  25. BOOST_TEST(test("***** x ", right_align(15, '*')[center[char_('x')]]));
  26. BOOST_TEST(test("***** x", right_align(15, '*')[right_align[char_('x')]]));
  27. BOOST_TEST(test("***x **", center(15, '*')[left_align[char_('x')]]));
  28. BOOST_TEST(test("*** x **", center(15, '*')[center[char_('x')]]));
  29. BOOST_TEST(test("*** x**", center(15, '*')[right_align[char_('x')]]));
  30. BOOST_TEST(test("ab *****", left_align(15, '*')[left_align[lit("ab")]]));
  31. BOOST_TEST(test(" ab *****", left_align(15, '*')[center[lit("ab")]]));
  32. BOOST_TEST(test(" ab*****", left_align(15, '*')[right_align[lit("ab")]]));
  33. BOOST_TEST(test("*****ab ", right_align(15, '*')[left_align[lit("ab")]]));
  34. BOOST_TEST(test("***** ab ", right_align(15, '*')[center[lit("ab")]]));
  35. BOOST_TEST(test("***** ab", right_align(15, '*')[right_align[lit("ab")]]));
  36. BOOST_TEST(test("***ab **", center(15, '*')[left_align[lit("ab")]]));
  37. BOOST_TEST(test("*** ab **", center(15, '*')[center[lit("ab")]]));
  38. BOOST_TEST(test("*** ab**", center(15, '*')[right_align[lit("ab")]]));
  39. }
  40. {
  41. BOOST_TEST(test("x ******", left_align(16, '*')[left_align[char_('x')]]));
  42. BOOST_TEST(test(" x ******", left_align(16, '*')[center[char_('x')]]));
  43. BOOST_TEST(test(" x******", left_align(16, '*')[right_align[char_('x')]]));
  44. BOOST_TEST(test("******x ", right_align(16, '*')[left_align[char_('x')]]));
  45. BOOST_TEST(test("****** x ", right_align(16, '*')[center[char_('x')]]));
  46. BOOST_TEST(test("****** x", right_align(16, '*')[right_align[char_('x')]]));
  47. BOOST_TEST(test("***x ***", center(16, '*')[left_align[char_('x')]]));
  48. BOOST_TEST(test("*** x ***", center(16, '*')[center[char_('x')]]));
  49. BOOST_TEST(test("*** x***", center(16, '*')[right_align[char_('x')]]));
  50. BOOST_TEST(test("ab ******", left_align(16, '*')[left_align[lit("ab")]]));
  51. BOOST_TEST(test(" ab ******", left_align(16, '*')[center[lit("ab")]]));
  52. BOOST_TEST(test(" ab******", left_align(16, '*')[right_align[lit("ab")]]));
  53. BOOST_TEST(test("******ab ", right_align(16, '*')[left_align[lit("ab")]]));
  54. BOOST_TEST(test("****** ab ", right_align(16, '*')[center[lit("ab")]]));
  55. BOOST_TEST(test("****** ab", right_align(16, '*')[right_align[lit("ab")]]));
  56. BOOST_TEST(test("***ab ***", center(16, '*')[left_align[lit("ab")]]));
  57. BOOST_TEST(test("*** ab ***", center(16, '*')[center[lit("ab")]]));
  58. BOOST_TEST(test("*** ab***", center(16, '*')[right_align[lit("ab")]]));
  59. }
  60. {
  61. BOOST_TEST(test("x ****", left_align(15, '*')[left_align(11)[char_('x')]]));
  62. BOOST_TEST(test(" x ****", left_align(15, '*')[center(11)[char_('x')]]));
  63. BOOST_TEST(test(" x****", left_align(15, '*')[right_align(11)[char_('x')]]));
  64. BOOST_TEST(test("****x ", right_align(15, '*')[left_align(11)[char_('x')]]));
  65. BOOST_TEST(test("**** x ", right_align(15, '*')[center(11)[char_('x')]]));
  66. BOOST_TEST(test("**** x", right_align(15, '*')[right_align(11)[char_('x')]]));
  67. BOOST_TEST(test("**x **", center(15, '*')[left_align(11)[char_('x')]]));
  68. BOOST_TEST(test("** x **", center(15, '*')[center(11)[char_('x')]]));
  69. BOOST_TEST(test("** x**", center(15, '*')[right_align(11)[char_('x')]]));
  70. BOOST_TEST(test("ab ****", left_align(15, '*')[left_align(11)[lit("ab")]]));
  71. BOOST_TEST(test(" ab ****", left_align(15, '*')[center(11)[lit("ab")]]));
  72. BOOST_TEST(test(" ab****", left_align(15, '*')[right_align(11)[lit("ab")]]));
  73. BOOST_TEST(test("****ab ", right_align(15, '*')[left_align(11)[lit("ab")]]));
  74. BOOST_TEST(test("**** ab ", right_align(15, '*')[center(11)[lit("ab")]]));
  75. BOOST_TEST(test("**** ab", right_align(15, '*')[right_align(11)[lit("ab")]]));
  76. BOOST_TEST(test("**ab **", center(15, '*')[left_align(11)[lit("ab")]]));
  77. BOOST_TEST(test("** ab **", center(15, '*')[center(11)[lit("ab")]]));
  78. BOOST_TEST(test("** ab**", center(15, '*')[right_align(11)[lit("ab")]]));
  79. }
  80. {
  81. BOOST_TEST(test("x *****", left_align(16, '*')[left_align(11)[char_('x')]]));
  82. BOOST_TEST(test(" x *****", left_align(16, '*')[center(11)[char_('x')]]));
  83. BOOST_TEST(test(" x*****", left_align(16, '*')[right_align(11)[char_('x')]]));
  84. BOOST_TEST(test("*****x ", right_align(16, '*')[left_align(11)[char_('x')]]));
  85. BOOST_TEST(test("***** x ", right_align(16, '*')[center(11)[char_('x')]]));
  86. BOOST_TEST(test("***** x", right_align(16, '*')[right_align(11)[char_('x')]]));
  87. BOOST_TEST(test("***x **", center(16, '*')[left_align(11)[char_('x')]]));
  88. BOOST_TEST(test("*** x **", center(16, '*')[center(11)[char_('x')]]));
  89. BOOST_TEST(test("*** x**", center(16, '*')[right_align(11)[char_('x')]]));
  90. BOOST_TEST(test("ab *****", left_align(16, '*')[left_align(11)[lit("ab")]]));
  91. BOOST_TEST(test(" ab *****", left_align(16, '*')[center(11)[lit("ab")]]));
  92. BOOST_TEST(test(" ab*****", left_align(16, '*')[right_align(11)[lit("ab")]]));
  93. BOOST_TEST(test("*****ab ", right_align(16, '*')[left_align(11)[lit("ab")]]));
  94. BOOST_TEST(test("***** ab ", right_align(16, '*')[center(11)[lit("ab")]]));
  95. BOOST_TEST(test("***** ab", right_align(16, '*')[right_align(11)[lit("ab")]]));
  96. BOOST_TEST(test("***ab **", center(16, '*')[left_align(11)[lit("ab")]]));
  97. BOOST_TEST(test("*** ab **", center(16, '*')[center(11)[lit("ab")]]));
  98. BOOST_TEST(test("*** ab**", center(16, '*')[right_align(11)[lit("ab")]]));
  99. }
  100. return boost::report_errors();
  101. }