magnetico/cmd/magneticod/bittorrent/metadata/leech_test.go

45 lines
1.0 KiB
Go
Raw Normal View History

package metadata
import (
"bytes"
"testing"
2018-12-30 06:25:03 +01:00
"github.com/anacrolix/torrent/bencode"
)
var operationsTest_instances = []struct {
dump []byte
surplus []byte
}{
// No Surplus
{
dump: []byte("d1:md11:ut_metadatai1ee13:metadata_sizei22528ee"),
surplus: []byte(""),
},
// Surplus is an ASCII string
{
dump: []byte("d1:md11:ut_metadatai1ee13:metadata_sizei22528eeDENEME"),
surplus: []byte("DENEME"),
},
// Surplus is a bencoded dictionary
{
dump: []byte("d1:md11:ut_metadatai1ee13:metadata_sizei22528eed3:inti1337ee"),
surplus: []byte("d3:inti1337ee"),
},
}
func TestDecoder(t *testing.T) {
for i, instance := range operationsTest_instances {
buf := bytes.NewBuffer(instance.dump)
err := bencode.NewDecoder(buf).Decode(&struct{}{})
if err != nil {
t.Errorf("Couldn't decode the dump #%d! %s", i+1, err.Error())
}
bufSurplus := buf.Bytes()
if !bytes.Equal(bufSurplus, instance.surplus) {
t.Errorf("Surplus #%d is not equal to what we expected! `%s`", i+1, bufSurplus)
}
}
}