7 type random_encode_test struct {
12 type random_struct struct {
13 ABC int `bencode:"abc"`
14 SkipThisOne string `bencode:"-"`
22 func (d *dummy) MarshalBencode() ([]byte, error) {
24 _, err := fmt.Fprintf(&b, "i%dei%dei%de", d.a + 1, d.b + 1, d.c + 1)
31 var random_encode_tests = []random_encode_test{
34 {"hello, world", "12:hello, world"},
38 {int16(-16), "i-16e"},
40 {int64(-64), "i-64e"},
45 {random_struct{123, "nono", "hello"}, "d3:CDE5:hello3:abci123ee"},
46 {map[string]string{"a": "b", "c": "d"}, "d1:a1:b1:c1:de"},
47 {[]byte{1, 2, 3, 4}, "4:\x01\x02\x03\x04"},
48 {[4]byte{1, 2, 3, 4}, "li1ei2ei3ei4ee"},
53 {map[string]int{}, "de"},
54 {&dummy{1, 2, 3}, "i2ei3ei4e"},
57 func TestRandomEncode(t *testing.T) {
58 for _, test := range random_encode_tests {
59 data, err := Marshal(test.value)
63 if !bytes.Equal(data, []byte(test.expected)) {
64 t.Errorf("got: %s, expected: %s\n",
65 string(data), string(test.expected))