1
0
mirror of https://github.com/veggiedefender/torrent-client.git synced 2025-11-06 09:29:16 +02:00

Test torrent

This commit is contained in:
Jesse Li
2019-12-22 13:46:51 -05:00
parent 4841bcda29
commit 1cb698ce85

62
torrent/torrent_test.go Normal file
View File

@@ -0,0 +1,62 @@
package torrent
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestToTorrent(t *testing.T) {
tests := map[string]struct {
input *bencodeTorrent
output *Torrent
fails bool
}{
"correct conversion": {
input: &bencodeTorrent{
Announce: "http://bttracker.debian.org:6969/announce",
Info: bencodeInfo{
Pieces: "1234567890abcdefghijabcdefghij1234567890",
PieceLength: 262144,
Length: 351272960,
Name: "debian-10.2.0-amd64-netinst.iso",
},
},
output: &Torrent{
Announce: "http://bttracker.debian.org:6969/announce",
InfoHash: []byte{216, 247, 57, 206, 195, 40, 149, 108, 204, 91, 191, 31, 134, 217, 253, 207, 219, 168, 206, 182},
PieceHashes: [][]byte{
{49, 50, 51, 52, 53, 54, 55, 56, 57, 48, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106},
{97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 49, 50, 51, 52, 53, 54, 55, 56, 57, 48},
},
PieceLength: 262144,
Length: 351272960,
Name: "debian-10.2.0-amd64-netinst.iso",
},
fails: false,
},
"not enough bytes in pieces": {
input: &bencodeTorrent{
Announce: "http://bttracker.debian.org:6969/announce",
Info: bencodeInfo{
Pieces: "1234567890abcdefghijabcdef", // Only 26 bytes
PieceLength: 262144,
Length: 351272960,
Name: "debian-10.2.0-amd64-netinst.iso",
},
},
output: nil,
fails: true,
},
}
for _, test := range tests {
to, err := test.input.toTorrent()
if test.fails {
assert.NotNil(t, err)
} else {
assert.Nil(t, err)
}
assert.Equal(t, test.output, to)
}
}