| 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
 |