54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package chunk
|
|
|
|
import "testing"
|
|
|
|
func TestSplitChunkRanges(t *testing.T) {
|
|
testcases := []struct {
|
|
offset, size, chunkSize int64
|
|
result []byteRange
|
|
}{
|
|
{0, 0, 4096, []byteRange{}},
|
|
{0, 4096, 4096, []byteRange{
|
|
{0, 4096},
|
|
}},
|
|
{4095, 4096, 4096, []byteRange{
|
|
{4095, 1},
|
|
{4096, 4095},
|
|
}},
|
|
{0, 8192, 4096, []byteRange{
|
|
{0, 4096},
|
|
{4096, 4096},
|
|
}},
|
|
{2048, 8192, 4096, []byteRange{
|
|
{2048, 2048},
|
|
{4096, 4096},
|
|
{8192, 2048},
|
|
}},
|
|
{2048, 8192, 4096, []byteRange{
|
|
{2048, 2048},
|
|
{4096, 4096},
|
|
{8192, 2048},
|
|
}},
|
|
{17960960, 16777216, 10485760, []byteRange{
|
|
{17960960, 3010560},
|
|
{20971520, 10485760},
|
|
{31457280, 3280896},
|
|
}},
|
|
}
|
|
for i, tc := range testcases {
|
|
ranges := splitChunkRanges(tc.offset, tc.size, tc.chunkSize)
|
|
actualSize := len(ranges)
|
|
expectedSize := len(tc.result)
|
|
if actualSize != expectedSize {
|
|
t.Fatalf("ByteRange %v length mismatch: %v != %v", i, actualSize, expectedSize)
|
|
}
|
|
for j, r := range ranges {
|
|
actual := r
|
|
expected := tc.result[j]
|
|
if actual != expected {
|
|
t.Fatalf("ByteRange %v mismatch: %v != %v", i, actual, expected)
|
|
}
|
|
}
|
|
}
|
|
}
|