| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | #include "Option.h"#include <string>#include <cppunit/extensions/HelperMacros.h>#include "prefs.h"namespace aria2 {class OptionTest:public CppUnit::TestFixture {  CPPUNIT_TEST_SUITE(OptionTest);  CPPUNIT_TEST(testPutAndGet);  CPPUNIT_TEST(testPutAndGetAsInt);  CPPUNIT_TEST(testPutAndGetAsDouble);  CPPUNIT_TEST(testDefined);  CPPUNIT_TEST(testBlank);  CPPUNIT_TEST(testMerge);  CPPUNIT_TEST(testParent);  CPPUNIT_TEST_SUITE_END();private:public:  void setUp() {  }  void testPutAndGet();  void testPutAndGetAsInt();  void testPutAndGetAsDouble();  void testDefined();  void testBlank();  void testMerge();  void testParent();};CPPUNIT_TEST_SUITE_REGISTRATION( OptionTest );void OptionTest::testPutAndGet() {  Option op;  op.put(PREF_TIMEOUT, "value");  CPPUNIT_ASSERT(op.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT_EQUAL(std::string("value"), op.get(PREF_TIMEOUT));}void OptionTest::testPutAndGetAsInt() {  Option op;  op.put(PREF_TIMEOUT, "1000");  CPPUNIT_ASSERT(op.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT_EQUAL((int32_t)1000, op.getAsInt(PREF_TIMEOUT));}void OptionTest::testPutAndGetAsDouble() {  Option op;  op.put(PREF_TIMEOUT, "10.0");  CPPUNIT_ASSERT_EQUAL(10.0, op.getAsDouble(PREF_TIMEOUT));}void OptionTest::testDefined(){  Option op;  op.put(PREF_TIMEOUT, "v");  op.put(PREF_DIR, "");  CPPUNIT_ASSERT(op.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT(op.defined(PREF_DIR));  CPPUNIT_ASSERT(!op.defined(PREF_DAEMON));}void OptionTest::testBlank(){  Option op;  op.put(PREF_TIMEOUT, "v");  op.put(PREF_DIR, "");  CPPUNIT_ASSERT(!op.blank(PREF_TIMEOUT));  CPPUNIT_ASSERT(op.blank(PREF_DIR));  CPPUNIT_ASSERT(op.blank(PREF_DAEMON));}void OptionTest::testMerge(){  Option src;  src.put(PREF_TIMEOUT, "100");  src.put(PREF_DAEMON, "true");  Option dest;  dest.put(PREF_DAEMON, "false");  dest.put(PREF_DIR, "foo");  dest.merge(src);  CPPUNIT_ASSERT_EQUAL(100, dest.getAsInt(PREF_TIMEOUT));  CPPUNIT_ASSERT(dest.getAsBool(PREF_DAEMON));  CPPUNIT_ASSERT_EQUAL(std::string("foo"), dest.get(PREF_DIR));  CPPUNIT_ASSERT(!dest.defined(PREF_OUT));}void OptionTest::testParent(){  Option child;  std::shared_ptr<Option> parent(new Option());  parent->put(PREF_TIMEOUT, "100");  child.put(PREF_DIR, "foo");  CPPUNIT_ASSERT(!child.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT(!child.definedLocal(PREF_TIMEOUT));  child.setParent(parent);  CPPUNIT_ASSERT(child.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT_EQUAL(std::string("100"), child.get(PREF_TIMEOUT));  CPPUNIT_ASSERT_EQUAL((int32_t)100, child.getAsInt(PREF_TIMEOUT));  CPPUNIT_ASSERT(!child.definedLocal(PREF_TIMEOUT));  // blank  CPPUNIT_ASSERT(!child.blank(PREF_DIR));  child.put(PREF_DIR, "");  CPPUNIT_ASSERT(child.blank(PREF_DIR));  CPPUNIT_ASSERT(!child.blank(PREF_TIMEOUT));  // override  child.put(PREF_TIMEOUT, "200");  CPPUNIT_ASSERT(child.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT(child.definedLocal(PREF_TIMEOUT));  CPPUNIT_ASSERT_EQUAL(std::string("200"), child.get(PREF_TIMEOUT));  child.remove(PREF_TIMEOUT);  CPPUNIT_ASSERT(child.defined(PREF_TIMEOUT));  CPPUNIT_ASSERT(!child.definedLocal(PREF_TIMEOUT));}} // namespace aria2
 |