MCPcopy Create free account
hub / github.com/aria2/aria2 / testIsRangeSatisfied

Method testIsRangeSatisfied

test/HttpRequestTest.cc:699–758  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

697}
698
699void HttpRequestTest::testIsRangeSatisfied()
700{
701 auto request = std::make_shared<Request>();
702 request->supportsPersistentConnection(true);
703 request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
704 request->setPipeliningHint(false); // default: false
705 auto p = std::make_shared<Piece>(0, 1_m);
706 auto segment = std::make_shared<PiecedSegment>(1_m, p);
707 auto fileEntry = std::make_shared<FileEntry>("file", 0, 0);
708
709 HttpRequest httpRequest;
710
711 httpRequest.setRequest(request);
712 httpRequest.setSegment(segment);
713 httpRequest.setFileEntry(fileEntry);
714
715 Range range;
716
717 CPPUNIT_ASSERT(httpRequest.isRangeSatisfied(range));
718
719 p.reset(new Piece(1, 1_m));
720 segment.reset(new PiecedSegment(1_m, p));
721 httpRequest.setSegment(segment);
722
723 CPPUNIT_ASSERT(!httpRequest.isRangeSatisfied(range));
724
725 uint64_t entityLength = segment->getSegmentLength() * 10;
726
727 range = Range(segment->getPosition(), 0, entityLength);
728
729 CPPUNIT_ASSERT(httpRequest.isRangeSatisfied(range));
730
731 fileEntry->setLength(entityLength - 1);
732
733 CPPUNIT_ASSERT(!httpRequest.isRangeSatisfied(range));
734
735 fileEntry->setLength(entityLength);
736
737 CPPUNIT_ASSERT(httpRequest.isRangeSatisfied(range));
738
739 request->setPipeliningHint(true);
740
741 CPPUNIT_ASSERT(!httpRequest.isRangeSatisfied(range));
742
743 range =
744 Range(segment->getPosition(),
745 segment->getPosition() + segment->getLength() - 1, entityLength);
746
747 CPPUNIT_ASSERT(httpRequest.isRangeSatisfied(range));
748
749 range = Range(segment->getPosition(),
750 segment->getPosition() + segment->getLength() - 1, 0);
751
752 CPPUNIT_ASSERT(!httpRequest.isRangeSatisfied(range));
753
754 range =
755 Range(0, segment->getPosition() + segment->getLength() - 1, entityLength);
756

Callers

nothing calls this directly

Calls 13

setUriMethod · 0.80
setPipeliningHintMethod · 0.80
setSegmentMethod · 0.80
isRangeSatisfiedMethod · 0.80
RangeClass · 0.50
setRequestMethod · 0.45
setFileEntryMethod · 0.45
resetMethod · 0.45
getSegmentLengthMethod · 0.45
getPositionMethod · 0.45
setLengthMethod · 0.45

Tested by

no test coverage detected