diff options
Diffstat (limited to 'test/OptionTest.cc')
| -rw-r--r-- | test/OptionTest.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/OptionTest.cc b/test/OptionTest.cc index 29cb4c41..f33a4a6f 100644 --- a/test/OptionTest.cc +++ b/test/OptionTest.cc @@ -17,6 +17,7 @@ class OptionTest:public CppUnit::TestFixture { CPPUNIT_TEST(testDefined); CPPUNIT_TEST(testBlank); CPPUNIT_TEST(testMerge); + CPPUNIT_TEST(testParent); CPPUNIT_TEST_SUITE_END(); private: @@ -30,6 +31,7 @@ public: void testDefined(); void testBlank(); void testMerge(); + void testParent(); }; @@ -93,4 +95,32 @@ void OptionTest::testMerge() CPPUNIT_ASSERT(!dest.defined(PREF_OUT)); } +void OptionTest::testParent() +{ + Option child; + SharedHandle<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 |
