bool.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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::x3::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::x3::true_;
  20. using boost::spirit::x3::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::x3::true_;
  28. using boost::spirit::x3::false_;
  29. using boost::spirit::x3::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::x3::bool_parser<bool, boost::spirit::char_encoding::standard, 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::x3::bool_parser<test_bool_type, boost::spirit::char_encoding::standard>
  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. }