]> Sergey Matveev's repositories - btrtrc.git/blobdiff - file_test.go
Drop support for go 1.20
[btrtrc.git] / file_test.go
index b411126808ba922e8f48a4dcfa65cc59727e613a..2f57bcf46ae3d747f499598eeb1116dcb2015df7 100644 (file)
@@ -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)
 }