unrecognized_test.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // Copyright Sascha Ochsenknecht 2009.
  2. // Distributed under the Boost Software License, Version 1.0.
  3. // (See accompanying file LICENSE_1_0.txt
  4. // or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #include <boost/program_options/cmdline.hpp>
  6. #include <boost/program_options/options_description.hpp>
  7. #include <boost/program_options/parsers.hpp>
  8. #include <boost/program_options/detail/cmdline.hpp>
  9. using namespace boost::program_options;
  10. using boost::program_options::detail::cmdline;
  11. #include <iostream>
  12. #include <sstream>
  13. #include <vector>
  14. #include <cassert>
  15. using namespace std;
  16. #include "minitest.hpp"
  17. // Test free function collect_unrecognized()
  18. //
  19. // it collects the tokens of all not registered options. It can be used
  20. // to pass them to an own parser implementation
  21. void test_unrecognize_cmdline()
  22. {
  23. options_description desc;
  24. string content = "prg --input input.txt --optimization 4 --opt option";
  25. vector< string > tokens = split_unix(content);
  26. cmdline cmd(tokens);
  27. cmd.set_options_description(desc);
  28. cmd.allow_unregistered();
  29. vector< option > opts = cmd.run();
  30. vector< string > result = collect_unrecognized(opts, include_positional);
  31. BOOST_CHECK_EQUAL(result.size(), 7);
  32. BOOST_CHECK_EQUAL(result[0], "prg");
  33. BOOST_CHECK_EQUAL(result[1], "--input");
  34. BOOST_CHECK_EQUAL(result[2], "input.txt");
  35. BOOST_CHECK_EQUAL(result[3], "--optimization");
  36. BOOST_CHECK_EQUAL(result[4], "4");
  37. BOOST_CHECK_EQUAL(result[5], "--opt");
  38. BOOST_CHECK_EQUAL(result[6], "option");
  39. }
  40. void test_unrecognize_config()
  41. {
  42. options_description desc;
  43. string content =
  44. " input = input.txt\n"
  45. " optimization = 4\n"
  46. " opt = option\n"
  47. ;
  48. stringstream ss(content);
  49. vector< option > opts = parse_config_file(ss, desc, true).options;
  50. vector< string > result = collect_unrecognized(opts, include_positional);
  51. BOOST_CHECK_EQUAL(result.size(), 6);
  52. BOOST_CHECK_EQUAL(result[0], "input");
  53. BOOST_CHECK_EQUAL(result[1], "input.txt");
  54. BOOST_CHECK_EQUAL(result[2], "optimization");
  55. BOOST_CHECK_EQUAL(result[3], "4");
  56. BOOST_CHECK_EQUAL(result[4], "opt");
  57. BOOST_CHECK_EQUAL(result[5], "option");
  58. }
  59. int main(int /*ac*/, char** /*av*/)
  60. {
  61. test_unrecognize_cmdline();
  62. test_unrecognize_config();
  63. return 0;
  64. }