auto1.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // Copyright (c) 2001-2011 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. BOOST_TEST((!traits::meta_create_exists<karma::domain, my_type>::value));
  11. }
  12. {
  13. // test primitive types
  14. BOOST_TEST(test_create_generator("true", true));
  15. BOOST_TEST(test_create_generator("1", 1));
  16. BOOST_TEST(test_create_generator("1.1", 1.1));
  17. BOOST_TEST(test_create_generator("test", std::string("test")));
  18. BOOST_TEST(test_create_generator("a", 'a'));
  19. BOOST_TEST(test_create_generator(L"a", L'a'));
  20. // test containers
  21. std::vector<int> v;
  22. v.push_back(0);
  23. v.push_back(1);
  24. v.push_back(2);
  25. BOOST_TEST(test_create_generator("012", v));
  26. std::list<int> l;
  27. l.push_back(0);
  28. l.push_back(1);
  29. l.push_back(2);
  30. BOOST_TEST(test_create_generator("012", l));
  31. // test optional
  32. boost::optional<int> o;
  33. BOOST_TEST(test_create_generator("", o));
  34. o = 1;
  35. BOOST_TEST(test_create_generator("1", o));
  36. // test alternative
  37. boost::variant<int, double, float, std::string> vv;
  38. vv = 1;
  39. BOOST_TEST(test_create_generator("1", vv));
  40. vv = 1.0;
  41. BOOST_TEST(test_create_generator("1.0", vv));
  42. vv = 1.0f;
  43. BOOST_TEST(test_create_generator("1.0", vv));
  44. vv = "some string";
  45. BOOST_TEST(test_create_generator("some string", vv));
  46. // test fusion sequence
  47. std::pair<int, double> p (1, 2.0);
  48. BOOST_TEST(test_create_generator("12.0", p));
  49. }
  50. {
  51. // test primitive types
  52. // BOOST_TEST(test_create_generator_auto("true", true));
  53. // BOOST_TEST(test_create_generator_auto("1", 1));
  54. // BOOST_TEST(test_create_generator_auto("1.1", 1.1));
  55. // BOOST_TEST(test_create_generator_auto("test", std::string("test")));
  56. // BOOST_TEST(test_create_generator_auto("a", 'a'));
  57. // BOOST_TEST(test_create_generator_auto(L"a", L'a'));
  58. // test containers
  59. std::vector<int> v;
  60. v.push_back(0);
  61. v.push_back(1);
  62. v.push_back(2);
  63. BOOST_TEST(test_create_generator_auto("012", v));
  64. std::list<int> l;
  65. l.push_back(0);
  66. l.push_back(1);
  67. l.push_back(2);
  68. BOOST_TEST(test_create_generator_auto("012", l));
  69. // test optional
  70. boost::optional<int> o;
  71. BOOST_TEST(test_create_generator_auto("", o));
  72. o = 1;
  73. BOOST_TEST(test_create_generator_auto("1", o));
  74. // test alternative
  75. boost::variant<int, double, float, std::string> vv;
  76. vv = 1;
  77. BOOST_TEST(test_create_generator_auto("1", vv));
  78. vv = 1.0;
  79. BOOST_TEST(test_create_generator_auto("1.0", vv));
  80. vv = 1.0f;
  81. BOOST_TEST(test_create_generator_auto("1.0", vv));
  82. vv = "some string";
  83. BOOST_TEST(test_create_generator_auto("some string", vv));
  84. // test fusion sequence
  85. std::pair<int, double> p (1, 2.0);
  86. BOOST_TEST(test_create_generator_auto("12.0", p));
  87. }
  88. return boost::report_errors();
  89. }