bool1.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. {
  14. BOOST_TEST(test("true", bool_));
  15. BOOST_TEST(test("false", bool_));
  16. BOOST_TEST(!test("fasle", bool_));
  17. }
  18. {
  19. using boost::spirit::qi::true_;
  20. using boost::spirit::qi::false_;
  21. BOOST_TEST(test("true", true_));
  22. BOOST_TEST(!test("true", false_));
  23. BOOST_TEST(test("false", false_));
  24. BOOST_TEST(!test("false", true_));
  25. }
  26. {
  27. using boost::spirit::qi::true_;
  28. using boost::spirit::qi::false_;
  29. using boost::spirit::qi::no_case;
  30. BOOST_TEST(test("True", no_case[bool_]));
  31. BOOST_TEST(test("False", no_case[bool_]));
  32. BOOST_TEST(test("True", no_case[true_]));
  33. BOOST_TEST(test("False", no_case[false_]));
  34. }
  35. {
  36. bool b = false;
  37. BOOST_TEST(test_attr("true", bool_, b) && b);
  38. BOOST_TEST(test_attr("false", bool_, b) && !b);
  39. BOOST_TEST(!test_attr("fasle", bool_, b));
  40. }
  41. {
  42. typedef boost::spirit::qi::bool_parser<bool, backwards_bool_policies>
  43. backwards_bool_type;
  44. backwards_bool_type const backwards_bool = backwards_bool_type();
  45. BOOST_TEST(test("true", backwards_bool));
  46. BOOST_TEST(test("eurt", backwards_bool));
  47. BOOST_TEST(!test("false", backwards_bool));
  48. BOOST_TEST(!test("fasle", backwards_bool));
  49. bool b = false;
  50. BOOST_TEST(test_attr("true", backwards_bool, b) && b);
  51. BOOST_TEST(test_attr("eurt", backwards_bool, b) && !b);
  52. BOOST_TEST(!test_attr("false", backwards_bool, b));
  53. BOOST_TEST(!test_attr("fasle", backwards_bool, b));
  54. }
  55. {
  56. typedef boost::spirit::qi::bool_parser<test_bool_type>
  57. bool_test_type;
  58. bool_test_type const test_bool = bool_test_type();
  59. BOOST_TEST(test("true", test_bool));
  60. BOOST_TEST(test("false", test_bool));
  61. BOOST_TEST(!test("fasle", test_bool));
  62. test_bool_type b = false;
  63. BOOST_TEST(test_attr("true", test_bool, b) && b.b);
  64. BOOST_TEST(test_attr("false", test_bool, b) && !b.b);
  65. BOOST_TEST(!test_attr("fasle", test_bool, b));
  66. }
  67. return boost::report_errors();
  68. }