| 50 | } |
| 51 | |
| 52 | void DirectDiskAdaptorTest::testWriteCache() |
| 53 | { |
| 54 | auto adaptor = std::make_shared<DirectDiskAdaptor>(); |
| 55 | ByteArrayDiskWriter* dw; |
| 56 | { |
| 57 | auto sdw = make_unique<ByteArrayDiskWriter>(); |
| 58 | dw = sdw.get(); |
| 59 | adaptor->setDiskWriter(std::move(sdw)); |
| 60 | } |
| 61 | WrDiskCacheEntry cache{adaptor}; |
| 62 | std::string data1(4_k, '1'), data2(4094, '2'); |
| 63 | cache.cacheData(createDataCell(5, data1.c_str())); |
| 64 | cache.cacheData(createDataCell(5 + data1.size(), data2.c_str())); |
| 65 | adaptor->writeCache(&cache); |
| 66 | CPPUNIT_ASSERT_EQUAL(data1 + data2, dw->getString().substr(5)); |
| 67 | |
| 68 | cache.clear(); |
| 69 | dw->setString(""); |
| 70 | cache.cacheData(createDataCell(4_k, data1.c_str())); |
| 71 | adaptor->writeCache(&cache); |
| 72 | CPPUNIT_ASSERT_EQUAL(data1, dw->getString().substr(4_k)); |
| 73 | |
| 74 | cache.clear(); |
| 75 | dw->setString("???????"); |
| 76 | cache.cacheData(createDataCell(0, "abc")); |
| 77 | cache.cacheData(createDataCell(4, "efg")); |
| 78 | adaptor->writeCache(&cache); |
| 79 | CPPUNIT_ASSERT_EQUAL(std::string("abc?efg"), dw->getString()); |
| 80 | } |
| 81 | |
| 82 | } // namespace aria2 |
nothing calls this directly
no test coverage detected