magnetico/cmd/magneticod/bittorrent/operations_test.go
2018-03-02 18:56:17 +00:00

45 lines
1.0 KiB
Go

package bittorrent
import (
"bytes"
"testing"
"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)
}
}
}