| 34 | CPPUNIT_TEST_SUITE_REGISTRATION(WrDiskCacheTest); |
| 35 | |
| 36 | void WrDiskCacheTest::testAdd() |
| 37 | { |
| 38 | WrDiskCache dc(20); |
| 39 | CPPUNIT_ASSERT_EQUAL((size_t)0, dc.getSize()); |
| 40 | WrDiskCacheEntry e1(adaptor_); |
| 41 | e1.cacheData(createDataCell(0, "who knows?")); |
| 42 | CPPUNIT_ASSERT(dc.add(&e1)); |
| 43 | CPPUNIT_ASSERT_EQUAL((size_t)10, dc.getSize()); |
| 44 | |
| 45 | WrDiskCacheEntry e2(adaptor_); |
| 46 | e2.cacheData(createDataCell(21, "seconddata")); |
| 47 | CPPUNIT_ASSERT(dc.add(&e2)); |
| 48 | CPPUNIT_ASSERT_EQUAL((size_t)20, dc.getSize()); |
| 49 | |
| 50 | WrDiskCacheEntry e3(adaptor_); |
| 51 | e3.cacheData(createDataCell(10, "hello")); |
| 52 | CPPUNIT_ASSERT(dc.add(&e3)); |
| 53 | CPPUNIT_ASSERT_EQUAL((size_t)15, dc.getSize()); |
| 54 | // e1 is flushed to the disk |
| 55 | CPPUNIT_ASSERT_EQUAL(std::string("who knows?"), writer_->getString()); |
| 56 | CPPUNIT_ASSERT_EQUAL((size_t)0, e1.getSize()); |
| 57 | |
| 58 | e3.cacheData(createDataCell(15, " world")); |
| 59 | CPPUNIT_ASSERT(dc.update(&e3, 6)); |
| 60 | |
| 61 | // e3 is flushed to the disk |
| 62 | CPPUNIT_ASSERT_EQUAL(std::string("who knows?hello world"), |
| 63 | writer_->getString()); |
| 64 | CPPUNIT_ASSERT_EQUAL((size_t)0, e3.getSize()); |
| 65 | CPPUNIT_ASSERT_EQUAL((size_t)10, dc.getSize()); |
| 66 | |
| 67 | e2.cacheData(createDataCell(31, "01234567890")); |
| 68 | CPPUNIT_ASSERT(dc.update(&e2, 11)); |
| 69 | // e2 is flushed to the disk |
| 70 | CPPUNIT_ASSERT_EQUAL( |
| 71 | std::string("who knows?hello worldseconddata01234567890"), |
| 72 | writer_->getString()); |
| 73 | CPPUNIT_ASSERT_EQUAL((size_t)0, e2.getSize()); |
| 74 | CPPUNIT_ASSERT_EQUAL((size_t)0, dc.getSize()); |
| 75 | } |
| 76 | |
| 77 | } // namespace aria2 |