1 // Copyright (c) 2001-2010 Hartmut Kaiser
2 //
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #include "auto.hpp"
7
8 ///////////////////////////////////////////////////////////////////////////////
main()9 int main()
10 {
11 {
12 using spirit_test::test;
13 using spirit_test::test_delimited;
14
15 // test primitive types
16 BOOST_TEST(test_rule("true", true));
17 BOOST_TEST(test_rule("1", 1));
18 BOOST_TEST(test_rule("1.1", 1.1));
19 BOOST_TEST(test_rule("test", std::string("test")));
20
21 // test containers
22 std::vector<int> v;
23 v.push_back(0);
24 v.push_back(1);
25 v.push_back(2);
26 BOOST_TEST(test_rule("012", v));
27 BOOST_TEST(test_rule_delimited("0,1,2,", v, ','));
28
29 std::list<int> l;
30 l.push_back(0);
31 l.push_back(1);
32 l.push_back(2);
33 BOOST_TEST(test_rule("012", l));
34 BOOST_TEST(test_rule_delimited("0,1,2,", l, ','));
35
36 // test optional
37 boost::optional<int> o;
38 BOOST_TEST(test_rule("", o));
39 o = 1;
40 BOOST_TEST(test_rule("1", o));
41
42 // test alternative
43 boost::variant<int, double, float, std::string> vv;
44 vv = 1;
45 BOOST_TEST(test_rule("1", vv));
46 vv = 1.0;
47 BOOST_TEST(test_rule("1.0", vv));
48 vv = 1.0f;
49 BOOST_TEST(test_rule("1.0", vv));
50 vv = "some string";
51 BOOST_TEST(test_rule("some string", vv));
52
53 // test fusion sequence
54 std::pair<int, double> p (1, 2.0);
55 BOOST_TEST(test_rule("12.0", p));
56 BOOST_TEST(test_rule_delimited("1,2.0,", p, ','));
57 }
58
59 return boost::report_errors();
60 }
61