SegmentTest.cc 2.3 KB

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