9 type evilReader struct {
13 func (er *evilReader) Read(buf []byte) (int, error) {
14 n := copy(buf, er.buffer)
15 er.buffer = er.buffer[n:]
17 if len(er.buffer) == 0 {
23 func TestEvilReader(t *testing.T) {
24 emptyHash, err := Sum(nil, ID, 0)
28 r := NewReader(&evilReader{emptyHash})
29 h, err := r.ReadMultihash()
33 if !bytes.Equal(h, []byte(emptyHash)) {
36 h, err = r.ReadMultihash()
37 if len([]byte(h)) > 0 || err != io.EOF {
38 t.Fatal("expected end of file")
42 func TestReader(t *testing.T) {
46 for _, tc := range testCases {
47 m, err := tc.Multihash()
57 for _, tc := range testCases {
58 h, err := tc.Multihash()
63 h2, err := r.ReadMultihash()
69 if !bytes.Equal(h, h2) {
70 t.Error("h and h2 should be equal")
75 func TestWriter(t *testing.T) {
80 for _, tc := range testCases {
81 m, err := tc.Multihash()
87 if err := w.WriteMultihash(m); err != nil {
92 buf2 := make([]byte, len(m))
93 if _, err := io.ReadFull(&buf, buf2); err != nil {
98 if !bytes.Equal(m, buf2) {
99 t.Error("m and buf2 should be equal")