WrDiskCacheEntryTest.cc 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "WrDiskCacheEntry.h"
  2. #include <cstring>
  3. #include <cppunit/extensions/HelperMacros.h>
  4. #include "TestUtil.h"
  5. #include "DirectDiskAdaptor.h"
  6. #include "ByteArrayDiskWriter.h"
  7. namespace aria2 {
  8. class WrDiskCacheEntryTest:public CppUnit::TestFixture {
  9. CPPUNIT_TEST_SUITE(WrDiskCacheEntryTest);
  10. CPPUNIT_TEST(testWriteToDisk);
  11. CPPUNIT_TEST(testAppend);
  12. CPPUNIT_TEST(testClear);
  13. CPPUNIT_TEST_SUITE_END();
  14. SharedHandle<DirectDiskAdaptor> adaptor_;
  15. SharedHandle<ByteArrayDiskWriter> writer_;
  16. public:
  17. void setUp()
  18. {
  19. adaptor_.reset(new DirectDiskAdaptor());
  20. writer_.reset(new ByteArrayDiskWriter());
  21. adaptor_->setDiskWriter(writer_);
  22. }
  23. void testWriteToDisk();
  24. void testAppend();
  25. void testClear();
  26. };
  27. CPPUNIT_TEST_SUITE_REGISTRATION( WrDiskCacheEntryTest );
  28. void WrDiskCacheEntryTest::testWriteToDisk()
  29. {
  30. WrDiskCacheEntry e(adaptor_);
  31. e.cacheData(createDataCell(0, "??01234567", 2));
  32. e.cacheData(createDataCell(8, "890"));
  33. e.writeToDisk();
  34. CPPUNIT_ASSERT_EQUAL((size_t)0, e.getSize());
  35. CPPUNIT_ASSERT_EQUAL(std::string("01234567890"), writer_->getString());
  36. }
  37. void WrDiskCacheEntryTest::testAppend()
  38. {
  39. WrDiskCacheEntry e(adaptor_);
  40. WrDiskCacheEntry::DataCell* cell = new WrDiskCacheEntry::DataCell();
  41. cell->goff = 0;
  42. size_t capacity = 6;
  43. size_t offset = 2;
  44. cell->data = new unsigned char[offset+capacity];
  45. memcpy(cell->data, "??foo", 3);
  46. cell->offset = offset;
  47. cell->len = 3;
  48. cell->capacity = capacity;
  49. e.cacheData(cell);
  50. CPPUNIT_ASSERT_EQUAL((size_t)3,
  51. e.append(3, (const unsigned char*)"barbaz", 6));
  52. CPPUNIT_ASSERT_EQUAL((size_t)6, cell->len);
  53. CPPUNIT_ASSERT_EQUAL((size_t)6, e.getSize());
  54. CPPUNIT_ASSERT_EQUAL((size_t)0,
  55. e.append(7, (const unsigned char*)"FOO", 3));
  56. }
  57. void WrDiskCacheEntryTest::testClear()
  58. {
  59. WrDiskCacheEntry e(adaptor_);
  60. e.cacheData(createDataCell(0, "foo"));
  61. e.clear();
  62. CPPUNIT_ASSERT_EQUAL((size_t)0, e.getSize());
  63. CPPUNIT_ASSERT_EQUAL(std::string(), writer_->getString());
  64. }
  65. } // namespace aria2