X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=file_test.go;h=2f57bcf46ae3d747f499598eeb1116dcb2015df7;hb=cff4595d060c5d4e5a5ccc04e4b3f489f7759b0a;hp=b411126808ba922e8f48a4dcfa65cc59727e613a;hpb=3507ff1a69fd0fecee89be8536ef3dd8b3ffca4d;p=btrtrc.git diff --git a/file_test.go b/file_test.go index b4111268..2f57bcf4 100644 --- a/file_test.go +++ b/file_test.go @@ -3,7 +3,7 @@ package torrent import ( "testing" - "github.com/anacrolix/missinggo/v2/bitmap" + "github.com/RoaringBitmap/roaring" "github.com/stretchr/testify/assert" ) @@ -28,31 +28,44 @@ type testFileBytesLeft struct { endPieceIndex int fileOffset int64 fileLength int64 - completedPieces bitmap.Bitmap + completedPieces roaring.Bitmap expected int64 name string } func (me testFileBytesLeft) Run(t *testing.T) { t.Run(me.name, func(t *testing.T) { - assert.EqualValues(t, me.expected, fileBytesLeft(me.usualPieceSize, me.firstPieceIndex, me.endPieceIndex, me.fileOffset, me.fileLength, me.completedPieces)) + assert.EqualValues(t, me.expected, fileBytesLeft(me.usualPieceSize, me.firstPieceIndex, me.endPieceIndex, me.fileOffset, me.fileLength, &me.completedPieces, func(pieceIndex int) int64 { + return 0 + })) }) } func TestFileBytesLeft(t *testing.T) { testFileBytesLeft{ - usualPieceSize: 2, + usualPieceSize: 3, firstPieceIndex: 1, endPieceIndex: 1, fileOffset: 1, + fileLength: 0, + expected: 0, + name: "ZeroLengthFile", + }.Run(t) + + testFileBytesLeft{ + usualPieceSize: 2, + firstPieceIndex: 1, + endPieceIndex: 2, + fileOffset: 1, fileLength: 1, expected: 1, + name: "EndOfSecondPiece", }.Run(t) testFileBytesLeft{ usualPieceSize: 3, firstPieceIndex: 0, - endPieceIndex: 0, + endPieceIndex: 1, fileOffset: 1, fileLength: 1, expected: 1, @@ -62,10 +75,44 @@ func TestFileBytesLeft(t *testing.T) { testFileBytesLeft{ usualPieceSize: 3, firstPieceIndex: 0, - endPieceIndex: 0, + endPieceIndex: 1, fileOffset: 1, fileLength: 1, expected: 1, name: "LandLocked", }.Run(t) + + testFileBytesLeft{ + usualPieceSize: 3, + firstPieceIndex: 1, + endPieceIndex: 3, + fileOffset: 4, + fileLength: 4, + expected: 4, + name: "TwoPieces", + }.Run(t) + + testFileBytesLeft{ + usualPieceSize: 3, + firstPieceIndex: 1, + endPieceIndex: 4, + fileOffset: 5, + fileLength: 7, + expected: 7, + name: "ThreePieces", + }.Run(t) + + testFileBytesLeft{ + usualPieceSize: 3, + firstPieceIndex: 1, + endPieceIndex: 4, + fileOffset: 5, + fileLength: 7, + expected: 0, + completedPieces: func() (ret roaring.Bitmap) { + ret.AddRange(0, 5) + return + }(), + name: "ThreePiecesCompletedAll", + }.Run(t) }