SegmentTest.cc 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "PiecedSegment.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "Piece.h"
  4. namespace aria2 {
  5. class SegmentTest : public CppUnit::TestFixture {
  6. CPPUNIT_TEST_SUITE(SegmentTest);
  7. CPPUNIT_TEST(testUpdateWrittenLength);
  8. CPPUNIT_TEST(testUpdateWrittenLength_lastPiece);
  9. CPPUNIT_TEST(testUpdateWrittenLength_incompleteLastPiece);
  10. CPPUNIT_TEST(testClear);
  11. CPPUNIT_TEST_SUITE_END();
  12. private:
  13. public:
  14. void setUp() {}
  15. void testUpdateWrittenLength();
  16. void testUpdateWrittenLength_lastPiece();
  17. void testUpdateWrittenLength_incompleteLastPiece();
  18. void testClear();
  19. };
  20. CPPUNIT_TEST_SUITE_REGISTRATION( SegmentTest );
  21. void SegmentTest::testUpdateWrittenLength()
  22. {
  23. std::shared_ptr<Piece> p(new Piece(0, 16*1024*10));
  24. PiecedSegment s(16*1024*10, p);
  25. CPPUNIT_ASSERT_EQUAL((int64_t)0, s.getWrittenLength());
  26. s.updateWrittenLength(16*1024);
  27. CPPUNIT_ASSERT(p->hasBlock(0));
  28. CPPUNIT_ASSERT(!p->hasBlock(1));
  29. s.updateWrittenLength(16*1024*9);
  30. CPPUNIT_ASSERT(p->pieceComplete());
  31. }
  32. void SegmentTest::testUpdateWrittenLength_lastPiece()
  33. {
  34. std::shared_ptr<Piece> p(new Piece(0, 16*1024*9+1));
  35. PiecedSegment s(16*1024*10, p);
  36. s.updateWrittenLength(p->getLength());
  37. CPPUNIT_ASSERT(p->pieceComplete());
  38. }
  39. void SegmentTest::testUpdateWrittenLength_incompleteLastPiece()
  40. {
  41. std::shared_ptr<Piece> p(new Piece(0, 16*1024*9+2));
  42. PiecedSegment s(16*1024*10, p);
  43. s.updateWrittenLength(16*1024*9+1);
  44. CPPUNIT_ASSERT(!p->pieceComplete());
  45. s.updateWrittenLength(1);
  46. CPPUNIT_ASSERT(p->pieceComplete());
  47. }
  48. void SegmentTest::testClear()
  49. {
  50. std::shared_ptr<Piece> p(new Piece(0, 16*1024*10));
  51. PiecedSegment s(16*1024*10, p);
  52. s.updateWrittenLength(16*1024*10);
  53. CPPUNIT_ASSERT_EQUAL((int64_t)16*1024*10, s.getWrittenLength());
  54. s.clear(nullptr);
  55. CPPUNIT_ASSERT_EQUAL((int64_t)0, s.getWrittenLength());
  56. }
  57. } // namespace aria2