| 443 | } |
| 444 | |
| 445 | void MultiDiskAdaptorTest::testWriteCache() |
| 446 | { |
| 447 | std::string storeDir = |
| 448 | A2_TEST_OUT_DIR "/aria2_MultiDiskAdaptorTest_testWriteCache"; |
| 449 | auto entries = std::vector<std::shared_ptr<FileEntry>>{ |
| 450 | std::make_shared<FileEntry>(storeDir + "/file1", 16385, 0), |
| 451 | std::make_shared<FileEntry>(storeDir + "/file2", 4098, 16385)}; |
| 452 | for (const auto& i : entries) { |
| 453 | File(i->getPath()).remove(); |
| 454 | } |
| 455 | auto adaptor = std::make_shared<MultiDiskAdaptor>(); |
| 456 | adaptor->setFileEntries(std::begin(entries), std::end(entries)); |
| 457 | WrDiskCacheEntry cache{adaptor}; |
| 458 | std::string data1(16383, '1'), data2(100, '2'), data3(4000, '3'); |
| 459 | cache.cacheData(createDataCell(0, data1.c_str())); |
| 460 | cache.cacheData(createDataCell(data1.size(), data2.c_str())); |
| 461 | cache.cacheData(createDataCell(data1.size() + data2.size(), data3.c_str())); |
| 462 | adaptor->openFile(); |
| 463 | adaptor->writeCache(&cache); |
| 464 | for (int i = 0; i < 2; ++i) { |
| 465 | CPPUNIT_ASSERT_EQUAL(entries[i]->getLength(), |
| 466 | File(entries[i]->getPath()).size()); |
| 467 | } |
| 468 | CPPUNIT_ASSERT_EQUAL(data1 + data2.substr(0, 2), |
| 469 | readFile(entries[0]->getPath())); |
| 470 | CPPUNIT_ASSERT_EQUAL(data2.substr(2) + data3, |
| 471 | readFile(entries[1]->getPath())); |
| 472 | |
| 473 | adaptor->closeFile(); |
| 474 | for (int i = 0; i < 2; ++i) { |
| 475 | File(entries[i]->getPath()).remove(); |
| 476 | } |
| 477 | cache.clear(); |
| 478 | cache.cacheData(createDataCell(123, data2.c_str())); |
| 479 | adaptor->openFile(); |
| 480 | adaptor->writeCache(&cache); |
| 481 | CPPUNIT_ASSERT_EQUAL((int64_t)(123 + data2.size()), |
| 482 | File(entries[0]->getPath()).size()); |
| 483 | CPPUNIT_ASSERT_EQUAL(data2, readFile(entries[0]->getPath()).substr(123)); |
| 484 | } |
| 485 | |
| 486 | } // namespace aria2 |
nothing calls this directly
no test coverage detected