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

source code of boost/libs/spirit/test/qi/bool2.cpp