• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
main()13 int 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