1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #include "WrDiskCacheEntry.h"
- #include <cstring>
- #include <cppunit/extensions/HelperMacros.h>
- #include "TestUtil.h"
- #include "DirectDiskAdaptor.h"
- #include "ByteArrayDiskWriter.h"
- namespace aria2 {
- class WrDiskCacheEntryTest : public CppUnit::TestFixture {
- CPPUNIT_TEST_SUITE(WrDiskCacheEntryTest);
- CPPUNIT_TEST(testWriteToDisk);
- CPPUNIT_TEST(testAppend);
- CPPUNIT_TEST(testClear);
- CPPUNIT_TEST_SUITE_END();
- std::shared_ptr<DirectDiskAdaptor> adaptor_;
- ByteArrayDiskWriter* writer_;
- public:
- void setUp()
- {
- adaptor_ = std::make_shared<DirectDiskAdaptor>();
- auto dw = make_unique<ByteArrayDiskWriter>();
- writer_ = dw.get();
- adaptor_->setDiskWriter(std::move(dw));
- }
- void testWriteToDisk();
- void testAppend();
- void testClear();
- };
- CPPUNIT_TEST_SUITE_REGISTRATION(WrDiskCacheEntryTest);
- void WrDiskCacheEntryTest::testWriteToDisk()
- {
- WrDiskCacheEntry e(adaptor_);
- e.cacheData(createDataCell(0, "??01234567", 2));
- e.cacheData(createDataCell(8, "890"));
- e.writeToDisk();
- CPPUNIT_ASSERT_EQUAL((size_t)0, e.getSize());
- CPPUNIT_ASSERT_EQUAL(std::string("01234567890"), writer_->getString());
- }
- void WrDiskCacheEntryTest::testAppend()
- {
- WrDiskCacheEntry e(adaptor_);
- auto cell = new WrDiskCacheEntry::DataCell{};
- cell->goff = 0;
- size_t capacity = 6;
- size_t offset = 2;
- cell->data = new unsigned char[offset + capacity];
- memcpy(cell->data, "??foo", 3);
- cell->offset = offset;
- cell->len = 3;
- cell->capacity = capacity;
- e.cacheData(cell);
- CPPUNIT_ASSERT_EQUAL((size_t)3,
- e.append(3, (const unsigned char*)"barbaz", 6));
- CPPUNIT_ASSERT_EQUAL((size_t)6, cell->len);
- CPPUNIT_ASSERT_EQUAL((size_t)6, e.getSize());
- CPPUNIT_ASSERT_EQUAL((size_t)0, e.append(7, (const unsigned char*)"FOO", 3));
- }
- void WrDiskCacheEntryTest::testClear()
- {
- WrDiskCacheEntry e(adaptor_);
- e.cacheData(createDataCell(0, "foo"));
- e.clear();
- CPPUNIT_ASSERT_EQUAL((size_t)0, e.getSize());
- CPPUNIT_ASSERT_EQUAL(std::string(), writer_->getString());
- }
- } // namespace aria2
|