| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- #include "DirectDiskAdaptor.h"
 
- #include <cppunit/extensions/HelperMacros.h>
 
- #include "FileEntry.h"
 
- #include "DefaultDiskWriter.h"
 
- #include "Exception.h"
 
- #include "util.h"
 
- #include "TestUtil.h"
 
- #include "ByteArrayDiskWriter.h"
 
- #include "WrDiskCacheEntry.h"
 
- namespace aria2 {
 
- class DirectDiskAdaptorTest:public CppUnit::TestFixture {
 
-   CPPUNIT_TEST_SUITE(DirectDiskAdaptorTest);
 
-   CPPUNIT_TEST(testCutTrailingGarbage);
 
-   CPPUNIT_TEST(testWriteCache);
 
-   CPPUNIT_TEST_SUITE_END();
 
- public:
 
-   void setUp() {}
 
-   void tearDown() {}
 
-   void testCutTrailingGarbage();
 
-   void testWriteCache();
 
- };
 
- CPPUNIT_TEST_SUITE_REGISTRATION(DirectDiskAdaptorTest);
 
- void DirectDiskAdaptorTest::testCutTrailingGarbage()
 
- {
 
-   std::string dir = A2_TEST_OUT_DIR;
 
-   std::shared_ptr<FileEntry> entry
 
-     (new FileEntry(dir+"/aria2_DirectDiskAdaptorTest_testCutTrailingGarbage",
 
-                    256, 0));
 
-   createFile(entry->getPath(), entry->getLength()+100);
 
-   std::vector<std::shared_ptr<FileEntry> > fileEntries;
 
-   fileEntries.push_back(entry);
 
-   DirectDiskAdaptor adaptor;
 
-   adaptor.setDiskWriter
 
-     (std::shared_ptr<DiskWriter>(new DefaultDiskWriter(entry->getPath())));
 
-   adaptor.setTotalLength(entry->getLength());
 
-   adaptor.setFileEntries(fileEntries.begin(), fileEntries.end());
 
-   adaptor.openFile();
 
-   adaptor.cutTrailingGarbage();
 
-   CPPUNIT_ASSERT_EQUAL((int64_t)entry->getLength(),
 
-                        File(entry->getPath()).size());
 
- }
 
- void DirectDiskAdaptorTest::testWriteCache()
 
- {
 
-   std::shared_ptr<DirectDiskAdaptor> adaptor(new DirectDiskAdaptor());
 
-   std::shared_ptr<ByteArrayDiskWriter> dw(new ByteArrayDiskWriter());
 
-   adaptor->setDiskWriter(dw);
 
-   WrDiskCacheEntry cache(adaptor);
 
-   std::string data1(4096, '1'), data2(4094, '2');
 
-   cache.cacheData(createDataCell(5, data1.c_str()));
 
-   cache.cacheData(createDataCell(5+data1.size(), data2.c_str()));
 
-   adaptor->writeCache(&cache);
 
-   CPPUNIT_ASSERT_EQUAL(data1+data2, dw->getString().substr(5));
 
-   cache.clear();
 
-   dw->setString("");
 
-   cache.cacheData(createDataCell(4096, data1.c_str()));
 
-   adaptor->writeCache(&cache);
 
-   CPPUNIT_ASSERT_EQUAL(data1, dw->getString().substr(4096));
 
-   cache.clear();
 
-   dw->setString("???????");
 
-   cache.cacheData(createDataCell(0, "abc"));
 
-   cache.cacheData(createDataCell(4, "efg"));
 
-   adaptor->writeCache(&cache);
 
-   CPPUNIT_ASSERT_EQUAL(std::string("abc?efg"), dw->getString());
 
- }
 
- } // namespace aria2
 
 
  |