diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-06 14:21:43 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-06 14:21:43 +0000 |
| commit | b1713e63738839e861f0b10ef6ad58f0e93aef3e (patch) | |
| tree | f10b44c5e2b06ceb3cbe756fbbc865485c018702 /test/FileEntryTest.cc | |
| parent | 61b2b88c29accbc5a4b04471abbd5cc7e38c4baf (diff) | |
2010-03-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added changeUri XML-RPC method. This method removes/adds URIs
dynamically.
* doc/aria2c.1.txt
* src/AbstractCommand.cc
* src/DownloadContext.cc
* src/DownloadContext.h
* src/FileEntry.cc
* src/FileEntry.h
* src/Request.cc
* src/Request.h
* src/RequestGroup.cc
* src/RequestGroupMan.cc
* src/XmlRpcMethodFactory.cc
* src/XmlRpcMethodImpl.cc
* src/XmlRpcMethodImpl.h
* test/FileEntryTest.cc
* test/XmlRpcMethodTest.cc
Diffstat (limited to 'test/FileEntryTest.cc')
| -rw-r--r-- | test/FileEntryTest.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/FileEntryTest.cc b/test/FileEntryTest.cc index ee082cd8..fb5077eb 100644 --- a/test/FileEntryTest.cc +++ b/test/FileEntryTest.cc @@ -15,6 +15,10 @@ class FileEntryTest : public CppUnit::TestFixture { CPPUNIT_TEST(testGetRequest); CPPUNIT_TEST(testGetRequest_disableSingleHostMultiConnection); CPPUNIT_TEST(testReuseUri); + CPPUNIT_TEST(testAddUri); + CPPUNIT_TEST(testAddUris); + CPPUNIT_TEST(testInsertUri); + CPPUNIT_TEST(testRemoveUri); CPPUNIT_TEST_SUITE_END(); public: void setUp() {} @@ -25,6 +29,10 @@ public: void testGetRequest(); void testGetRequest_disableSingleHostMultiConnection(); void testReuseUri(); + void testAddUri(); + void testAddUris(); + void testInsertUri(); + void testRemoveUri(); }; @@ -149,4 +157,63 @@ void FileEntryTest::testReuseUri() CPPUNIT_ASSERT_EQUAL(std::string("ftp://localhost/aria2.zip"), uris[2]); } +void FileEntryTest::testAddUri() +{ + FileEntry file; + CPPUNIT_ASSERT(file.addUri("http://good")); + CPPUNIT_ASSERT(!file.addUri("bad")); +} + +void FileEntryTest::testAddUris() +{ + FileEntry file; + std::string uris[] = {"bad", "http://good"}; + CPPUNIT_ASSERT_EQUAL((size_t)1, file.addUris(&uris[0], &uris[2])); +} + +void FileEntryTest::testInsertUri() +{ + FileEntry file; + CPPUNIT_ASSERT(file.insertUri("http://example.org/1", 0)); + CPPUNIT_ASSERT(file.insertUri("http://example.org/2", 0)); + CPPUNIT_ASSERT(file.insertUri("http://example.org/3", 1)); + CPPUNIT_ASSERT(file.insertUri("http://example.org/4", 5)); + std::deque<std::string> uris = file.getRemainingUris(); + CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/2"), uris[0]); + CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/3"), uris[1]); + CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/1"), uris[2]); + CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/4"), uris[3]); +} + +void FileEntryTest::testRemoveUri() +{ + SharedHandle<InOrderURISelector> selector(new InOrderURISelector()); + FileEntry file; + file.addUri("http://example.org/"); + CPPUNIT_ASSERT(file.removeUri("http://example.org/")); + CPPUNIT_ASSERT(file.getRemainingUris().empty()); + CPPUNIT_ASSERT(!file.removeUri("http://example.org/")); + + file.addUri("http://example.org/"); + SharedHandle<Request> exampleOrgReq = file.getRequest(selector); + CPPUNIT_ASSERT(!exampleOrgReq->removalRequested()); + CPPUNIT_ASSERT_EQUAL((size_t)1, file.getSpentUris().size()); + CPPUNIT_ASSERT(file.removeUri("http://example.org/")); + CPPUNIT_ASSERT(file.getSpentUris().empty()); + CPPUNIT_ASSERT(exampleOrgReq->removalRequested()); + file.poolRequest(exampleOrgReq); + CPPUNIT_ASSERT_EQUAL((size_t)0, file.countPooledRequest()); + + file.addUri("http://example.org/"); + exampleOrgReq = file.getRequest(selector); + file.poolRequest(exampleOrgReq); + CPPUNIT_ASSERT_EQUAL((size_t)1, file.countPooledRequest()); + CPPUNIT_ASSERT(file.removeUri("http://example.org/")); + CPPUNIT_ASSERT_EQUAL((size_t)0, file.countPooledRequest()); + CPPUNIT_ASSERT(file.getSpentUris().empty()); + + file.addUri("http://example.org/"); + CPPUNIT_ASSERT(!file.removeUri("http://example.net")); +} + } // namespace aria2 |
