auto3.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. #include "auto.hpp"
  6. ///////////////////////////////////////////////////////////////////////////////
  7. int main()
  8. {
  9. {
  10. using spirit_test::test;
  11. using spirit_test::test_delimited;
  12. // test primitive types
  13. BOOST_TEST(test_rule("true", true));
  14. BOOST_TEST(test_rule("1", 1));
  15. BOOST_TEST(test_rule("1.1", 1.1));
  16. BOOST_TEST(test_rule("test", std::string("test")));
  17. // test containers
  18. std::vector<int> v;
  19. v.push_back(0);
  20. v.push_back(1);
  21. v.push_back(2);
  22. BOOST_TEST(test_rule("012", v));
  23. BOOST_TEST(test_rule_delimited("0,1,2,", v, ','));
  24. std::list<int> l;
  25. l.push_back(0);
  26. l.push_back(1);
  27. l.push_back(2);
  28. BOOST_TEST(test_rule("012", l));
  29. BOOST_TEST(test_rule_delimited("0,1,2,", l, ','));
  30. // test optional
  31. boost::optional<int> o;
  32. BOOST_TEST(test_rule("", o));
  33. o = 1;
  34. BOOST_TEST(test_rule("1", o));
  35. // test alternative
  36. boost::variant<int, double, float, std::string> vv;
  37. vv = 1;
  38. BOOST_TEST(test_rule("1", vv));
  39. vv = 1.0;
  40. BOOST_TEST(test_rule("1.0", vv));
  41. vv = 1.0f;
  42. BOOST_TEST(test_rule("1.0", vv));
  43. vv = "some string";
  44. BOOST_TEST(test_rule("some string", vv));
  45. // test fusion sequence
  46. std::pair<int, double> p (1, 2.0);
  47. BOOST_TEST(test_rule("12.0", p));
  48. BOOST_TEST(test_rule_delimited("1,2.0,", p, ','));
  49. }
  50. return boost::report_errors();
  51. }