bool2.cpp 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*=============================================================================
  2. Copyright (c) 2001-2011 Hartmut Kaiser
  3. Copyright (c) 2011 Bryce Lelbach
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. ==============================================================================*/
  7. #include "bool.hpp"
  8. int main()
  9. {
  10. using spirit_test::test_attr;
  11. using spirit_test::test;
  12. using boost::spirit::qi::bool_;
  13. using boost::spirit::qi::lit;
  14. using boost::spirit::qi::no_case;
  15. {
  16. BOOST_TEST(test("true", bool_(true)));
  17. BOOST_TEST(test("false", bool_(false)));
  18. BOOST_TEST(!test("fasle", bool_(false)));
  19. BOOST_TEST(!test("false", bool_(true)));
  20. BOOST_TEST(!test("true", bool_(false)));
  21. }
  22. {
  23. BOOST_TEST(test("True", no_case[bool_(true)]));
  24. BOOST_TEST(test("False", no_case[bool_(false)]));
  25. BOOST_TEST(test("TRUE", no_case[bool_(true)]));
  26. BOOST_TEST(test("FALSE", no_case[bool_(false)]));
  27. BOOST_TEST(!test("True", no_case[bool_(false)]));
  28. BOOST_TEST(!test("False", no_case[bool_(true)]));
  29. }
  30. {
  31. bool b = false;
  32. BOOST_TEST(test_attr("true", bool_(true), b) && b);
  33. BOOST_TEST(test_attr("false", bool_(false), b) && !b);
  34. BOOST_TEST(!test_attr("fasle", bool_(false), b));
  35. }
  36. {
  37. typedef boost::spirit::qi::bool_parser<bool, backwards_bool_policies>
  38. backwards_bool_type;
  39. backwards_bool_type const backwards_bool = backwards_bool_type();
  40. BOOST_TEST(test("true", backwards_bool(true)));
  41. BOOST_TEST(test("eurt", backwards_bool(false)));
  42. BOOST_TEST(!test("true", backwards_bool(false)));
  43. BOOST_TEST(!test("eurt", backwards_bool(true)));
  44. }
  45. {
  46. using boost::phoenix::ref;
  47. bool n = true, m = false;
  48. BOOST_TEST(test("true", bool_(ref(n))));
  49. BOOST_TEST(!test("true", bool_(ref(m))));
  50. }
  51. {
  52. BOOST_TEST(test("true", lit(true)));
  53. BOOST_TEST(test("false", lit(false)));
  54. BOOST_TEST(!test("fasle", lit(false)));
  55. BOOST_TEST(!test("false", lit(true)));
  56. BOOST_TEST(!test("true", lit(false)));
  57. }
  58. {
  59. BOOST_TEST(test("True", no_case[lit(true)]));
  60. BOOST_TEST(test("False", no_case[lit(false)]));
  61. BOOST_TEST(test("TRUE", no_case[lit(true)]));
  62. BOOST_TEST(test("FALSE", no_case[lit(false)]));
  63. BOOST_TEST(!test("True", no_case[lit(false)]));
  64. BOOST_TEST(!test("False", no_case[lit(true)]));
  65. }
  66. {
  67. using boost::phoenix::ref;
  68. bool n = true, m = false;
  69. BOOST_TEST(test("true", lit(ref(n))));
  70. BOOST_TEST(!test("true", lit(ref(m))));
  71. }
  72. return boost::report_errors();
  73. }