MCPcopy Create free account
hub / github.com/aria2/aria2 / testMakeDiskWriterEntries

Method testMakeDiskWriterEntries

test/MultiFileAllocationIteratorTest.cc:35–134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33CPPUNIT_TEST_SUITE_REGISTRATION(MultiFileAllocationIteratorTest);
34
35void MultiFileAllocationIteratorTest::testMakeDiskWriterEntries()
36{
37 std::string storeDir =
38 A2_TEST_OUT_DIR "/aria2_MultiFileAllocationIteratorTest"
39 "_testMakeDiskWriterEntries";
40
41 auto fs = std::vector<std::shared_ptr<FileEntry>>{
42 std::make_shared<FileEntry>(storeDir + "/file1", 1536, 0),
43 std::make_shared<FileEntry>(storeDir + "/file2", 2048, 1536), // req no
44 std::make_shared<FileEntry>(storeDir + "/file3", 1024, 3584),
45 std::make_shared<FileEntry>(storeDir + "/file4", 1024, 4608), // req no
46 std::make_shared<FileEntry>(storeDir + "/file5", 1024, 5632), // req no
47 std::make_shared<FileEntry>(storeDir + "/file6", 1024, 6656), // req no
48 std::make_shared<FileEntry>(storeDir + "/file7", 256, 7680), // req no
49 std::make_shared<FileEntry>(storeDir + "/file8", 255, 7936),
50 std::make_shared<FileEntry>(storeDir + "/file9", 1025, 8191), // req no
51 std::make_shared<FileEntry>(storeDir + "/fileA", 1024, 9216), // req no
52 std::make_shared<FileEntry>(storeDir + "/fileB", 1024, 10240)};
53 fs[1]->setRequested(false); // file2
54 fs[3]->setRequested(false); // file4
55 fs[4]->setRequested(false); // file5
56 fs[5]->setRequested(false); // file6
57 fs[6]->setRequested(false); // file7
58 fs[8]->setRequested(false); // file9
59 fs[9]->setRequested(false); // fileA
60
61 for (auto& fe : fs) {
62 File{fe->getPath()}.remove();
63 }
64
65 // create empty file4
66 createFile(storeDir + std::string("/file4"), 0);
67
68 MultiDiskAdaptor diskAdaptor;
69 diskAdaptor.setFileEntries(std::begin(fs), std::end(fs));
70 diskAdaptor.setPieceLength(1_k);
71 diskAdaptor.openFile();
72
73 auto allocitr = diskAdaptor.fileAllocationIterator();
74 auto itr = dynamic_cast<MultiFileAllocationIterator*>(allocitr.get());
75
76 auto& entries = itr->getDiskWriterEntries();
77 CPPUNIT_ASSERT_EQUAL((size_t)11, entries.size());
78
79 // file1
80 CPPUNIT_ASSERT_EQUAL(storeDir + std::string("/file1"),
81 entries[0]->getFilePath());
82 CPPUNIT_ASSERT(entries[0]->needsFileAllocation());
83 CPPUNIT_ASSERT(entries[0]->getDiskWriter());
84 // file2
85 CPPUNIT_ASSERT_EQUAL(storeDir + std::string("/file2"),
86 entries[1]->getFilePath());
87 CPPUNIT_ASSERT(entries[1]->needsFileAllocation());
88 CPPUNIT_ASSERT(entries[1]->getDiskWriter());
89 // file3
90 CPPUNIT_ASSERT_EQUAL(storeDir + std::string("/file3"),
91 entries[2]->getFilePath());
92 CPPUNIT_ASSERT(entries[2]->needsFileAllocation());

Callers

nothing calls this directly

Calls 11

createFileFunction · 0.85
setRequestedMethod · 0.80
getPathMethod · 0.80
removeMethod · 0.45
setFileEntriesMethod · 0.45
setPieceLengthMethod · 0.45
openFileMethod · 0.45
getMethod · 0.45
sizeMethod · 0.45
needsFileAllocationMethod · 0.45

Tested by

no test coverage detected