summaryrefslogtreecommitdiff
path: root/test/FileEntryTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-06 14:21:43 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-06 14:21:43 +0000
commitb1713e63738839e861f0b10ef6ad58f0e93aef3e (patch)
treef10b44c5e2b06ceb3cbe756fbbc865485c018702 /test/FileEntryTest.cc
parent61b2b88c29accbc5a4b04471abbd5cc7e38c4baf (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.cc67
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