OptionParserTest.cc 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include "OptionParser.h"
  2. #include "OptionHandlerImpl.h"
  3. #include "Exception.h"
  4. #include "Util.h"
  5. #include "Option.h"
  6. #include <iostream>
  7. #include <cppunit/extensions/HelperMacros.h>
  8. namespace aria2 {
  9. class OptionParserTest:public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(OptionParserTest);
  11. CPPUNIT_TEST(testFindAll);
  12. CPPUNIT_TEST(testFindByNameSubstring);
  13. CPPUNIT_TEST(testFindByTag);
  14. CPPUNIT_TEST(testFindByName);
  15. CPPUNIT_TEST(testParseDefaultValues);
  16. CPPUNIT_TEST_SUITE_END();
  17. private:
  18. SharedHandle<OptionParser> _oparser;
  19. public:
  20. void setUp()
  21. {
  22. _oparser.reset(new OptionParser());
  23. SharedHandle<OptionHandler> alpha(new DefaultOptionHandler("alpha",
  24. "",
  25. "ALPHA"));
  26. alpha->addTag("apple");
  27. _oparser->addOptionHandler(alpha);
  28. SharedHandle<OptionHandler> bravo(new DefaultOptionHandler("bravo"));
  29. bravo->addTag("apple");
  30. bravo->addTag("orange");
  31. bravo->addTag("pineapple");
  32. _oparser->addOptionHandler(bravo);
  33. SharedHandle<OptionHandler> charlie(new DefaultOptionHandler("charlie",
  34. "",
  35. "CHARLIE",
  36. "",
  37. true));
  38. charlie->addTag("pineapple");
  39. _oparser->addOptionHandler(charlie);
  40. SharedHandle<OptionHandler> delta(new UnitNumberOptionHandler("delta",
  41. "",
  42. "1M"));
  43. delta->addTag("pineapple");
  44. _oparser->addOptionHandler(delta);
  45. }
  46. void tearDown() {}
  47. void testFindAll();
  48. void testFindByNameSubstring();
  49. void testFindByTag();
  50. void testFindByName();
  51. void testParseDefaultValues();
  52. };
  53. CPPUNIT_TEST_SUITE_REGISTRATION(OptionParserTest);
  54. void OptionParserTest::testFindAll()
  55. {
  56. std::deque<SharedHandle<OptionHandler> > res = _oparser->findAll();
  57. CPPUNIT_ASSERT_EQUAL((size_t)3, res.size());
  58. CPPUNIT_ASSERT_EQUAL(std::string("alpha"), res[0]->getName());
  59. CPPUNIT_ASSERT_EQUAL(std::string("bravo"), res[1]->getName());
  60. CPPUNIT_ASSERT_EQUAL(std::string("delta"), res[2]->getName());
  61. }
  62. void OptionParserTest::testFindByNameSubstring()
  63. {
  64. std::deque<SharedHandle<OptionHandler> > res =
  65. _oparser->findByNameSubstring("l");
  66. CPPUNIT_ASSERT_EQUAL((size_t)2, res.size());
  67. CPPUNIT_ASSERT_EQUAL(std::string("alpha"), res[0]->getName());
  68. CPPUNIT_ASSERT_EQUAL(std::string("delta"), res[1]->getName());
  69. }
  70. void OptionParserTest::testFindByTag()
  71. {
  72. std::deque<SharedHandle<OptionHandler> > res =
  73. _oparser->findByTag("pineapple");
  74. CPPUNIT_ASSERT_EQUAL((size_t)2, res.size());
  75. CPPUNIT_ASSERT_EQUAL(std::string("bravo"), res[0]->getName());
  76. CPPUNIT_ASSERT_EQUAL(std::string("delta"), res[1]->getName());
  77. }
  78. void OptionParserTest::testFindByName()
  79. {
  80. SharedHandle<OptionHandler> bravo = _oparser->findByName("bravo");
  81. CPPUNIT_ASSERT(!bravo.isNull());
  82. CPPUNIT_ASSERT_EQUAL(std::string("bravo"), bravo->getName());
  83. SharedHandle<OptionHandler> charlie = _oparser->findByName("charlie");
  84. CPPUNIT_ASSERT(charlie.isNull());
  85. }
  86. void OptionParserTest::testParseDefaultValues()
  87. {
  88. Option option;
  89. _oparser->parseDefaultValues(&option);
  90. CPPUNIT_ASSERT_EQUAL(std::string("ALPHA"), option.get("alpha"));
  91. CPPUNIT_ASSERT_EQUAL(std::string("1048576"), option.get("delta"));
  92. CPPUNIT_ASSERT_EQUAL(std::string("CHARLIE"), option.get("charlie"));
  93. CPPUNIT_ASSERT(!option.defined("bravo"));
  94. }
  95. } // namespace aria2