浏览代码

2009-05-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	In DefaultBtContext::getActualBasePath(), return first
	FileEntry::getPath() for single file torrent.	
	* src/DefaultBtContext.cc
	* test/DefaultBtContextTest.cc
Tatsuhiro Tsujikawa 16 年之前
父节点
当前提交
8fe80169b3
共有 3 个文件被更改,包括 28 次插入1 次删除
  1. 7 0
      ChangeLog
  2. 5 1
      src/DefaultBtContext.cc
  3. 16 0
      test/DefaultBtContextTest.cc

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+2009-05-05  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	In DefaultBtContext::getActualBasePath(), return first
+	FileEntry::getPath() for single file torrent.	
+	* src/DefaultBtContext.cc
+	* test/DefaultBtContextTest.cc
+
 2009-05-04  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Removed directIOAllowed() from BinaryStream, DiskWriter,

+ 5 - 1
src/DefaultBtContext.cc

@@ -418,7 +418,11 @@ size_t DefaultBtContext::getNumPieces() const {
 
 std::string DefaultBtContext::getActualBasePath() const
 {
-  return _dir+"/"+name;
+  if(fileEntries.size() == 1) {
+    return fileEntries.front()->getPath();
+  } else {
+    return _dir+"/"+name;
+  }
 }
 
 void DefaultBtContext::computeFastSet

+ 16 - 0
test/DefaultBtContextTest.cc

@@ -43,6 +43,7 @@ class DefaultBtContextTest:public CppUnit::TestFixture {
   CPPUNIT_TEST(testLoadFromMemory_joinPathMulti);
   CPPUNIT_TEST(testLoadFromMemory_joinPathSingle);
   CPPUNIT_TEST(testGetNodes);
+  CPPUNIT_TEST(testGetActualBasePath);
   CPPUNIT_TEST_SUITE_END();
 public:
   void setUp() {
@@ -74,6 +75,7 @@ public:
   void testLoadFromMemory_joinPathMulti();
   void testLoadFromMemory_joinPathSingle();
   void testGetNodes();
+  void testGetActualBasePath();
 };
 
 
@@ -532,4 +534,18 @@ void DefaultBtContextTest::testGetNodes()
 
 }
 
+void DefaultBtContextTest::testGetActualBasePath()
+{
+  DefaultBtContext singleCtx;
+  singleCtx.load("single.torrent");
+  singleCtx.setFilePathWithIndex(1, "new-path");
+  CPPUNIT_ASSERT_EQUAL(std::string("new-path"), singleCtx.getActualBasePath());
+
+  DefaultBtContext multiCtx;
+  multiCtx.setDir("downloads");
+  multiCtx.load("test.torrent");
+  CPPUNIT_ASSERT_EQUAL(std::string("downloads/aria2-test"),
+		       multiCtx.getActualBasePath());
+}
+
 } // namespace aria2