import (
"testing"
- "github.com/anacrolix/missinggo/v2/bitmap"
+ "github.com/RoaringBitmap/roaring"
"github.com/stretchr/testify/assert"
)
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 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,
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)
}