OptionTest.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "Option.h"
  2. #include <string>
  3. #include <cppunit/extensions/HelperMacros.h>
  4. #include "prefs.h"
  5. namespace aria2 {
  6. class OptionTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(OptionTest);
  8. CPPUNIT_TEST(testPutAndGet);
  9. CPPUNIT_TEST(testPutAndGetAsInt);
  10. CPPUNIT_TEST(testPutAndGetAsDouble);
  11. CPPUNIT_TEST(testDefined);
  12. CPPUNIT_TEST(testBlank);
  13. CPPUNIT_TEST(testMerge);
  14. CPPUNIT_TEST_SUITE_END();
  15. private:
  16. public:
  17. void setUp() {
  18. }
  19. void testPutAndGet();
  20. void testPutAndGetAsInt();
  21. void testPutAndGetAsDouble();
  22. void testDefined();
  23. void testBlank();
  24. void testMerge();
  25. };
  26. CPPUNIT_TEST_SUITE_REGISTRATION( OptionTest );
  27. void OptionTest::testPutAndGet() {
  28. Option op;
  29. op.put(PREF_TIMEOUT, "value");
  30. CPPUNIT_ASSERT(op.defined(PREF_TIMEOUT));
  31. CPPUNIT_ASSERT_EQUAL(std::string("value"), op.get(PREF_TIMEOUT));
  32. }
  33. void OptionTest::testPutAndGetAsInt() {
  34. Option op;
  35. op.put(PREF_TIMEOUT, "1000");
  36. CPPUNIT_ASSERT(op.defined(PREF_TIMEOUT));
  37. CPPUNIT_ASSERT_EQUAL((int32_t)1000, op.getAsInt(PREF_TIMEOUT));
  38. }
  39. void OptionTest::testPutAndGetAsDouble() {
  40. Option op;
  41. op.put(PREF_TIMEOUT, "10.0");
  42. CPPUNIT_ASSERT_EQUAL(10.0, op.getAsDouble(PREF_TIMEOUT));
  43. }
  44. void OptionTest::testDefined()
  45. {
  46. Option op;
  47. op.put(PREF_TIMEOUT, "v");
  48. op.put(PREF_DIR, "");
  49. CPPUNIT_ASSERT(op.defined(PREF_TIMEOUT));
  50. CPPUNIT_ASSERT(op.defined(PREF_DIR));
  51. CPPUNIT_ASSERT(!op.defined(PREF_DAEMON));
  52. }
  53. void OptionTest::testBlank()
  54. {
  55. Option op;
  56. op.put(PREF_TIMEOUT, "v");
  57. op.put(PREF_DIR, "");
  58. CPPUNIT_ASSERT(!op.blank(PREF_TIMEOUT));
  59. CPPUNIT_ASSERT(op.blank(PREF_DIR));
  60. CPPUNIT_ASSERT(op.blank(PREF_DAEMON));
  61. }
  62. void OptionTest::testMerge()
  63. {
  64. Option src;
  65. src.put(PREF_TIMEOUT, "100");
  66. src.put(PREF_DAEMON, "true");
  67. Option dest;
  68. dest.put(PREF_DAEMON, "false");
  69. dest.put(PREF_DIR, "foo");
  70. dest.merge(src);
  71. CPPUNIT_ASSERT_EQUAL(100, dest.getAsInt(PREF_TIMEOUT));
  72. CPPUNIT_ASSERT(dest.getAsBool(PREF_DAEMON));
  73. CPPUNIT_ASSERT_EQUAL(std::string("foo"), dest.get(PREF_DIR));
  74. CPPUNIT_ASSERT(!dest.defined(PREF_OUT));
  75. }
  76. } // namespace aria2