]> Sergey Matveev's repositories - btrtrc.git/blob - bad_storage.go
Some test tidying and improvements
[btrtrc.git] / bad_storage.go
1 package torrent
2
3 import (
4         "errors"
5         "math/rand"
6         "strings"
7
8         "github.com/anacrolix/torrent/metainfo"
9         "github.com/anacrolix/torrent/storage"
10 )
11
12 type badStorage struct{}
13
14 var _ storage.ClientImpl = badStorage{}
15
16 func (bs badStorage) OpenTorrent(*metainfo.Info, metainfo.Hash) (storage.TorrentImpl, error) {
17         return bs, nil
18 }
19
20 func (bs badStorage) Close() error {
21         return nil
22 }
23
24 func (bs badStorage) Piece(p metainfo.Piece) storage.PieceImpl {
25         return badStoragePiece{p}
26 }
27
28 type badStoragePiece struct {
29         p metainfo.Piece
30 }
31
32 var _ storage.PieceImpl = badStoragePiece{}
33
34 func (p badStoragePiece) WriteAt(b []byte, off int64) (int, error) {
35         return 0, nil
36 }
37
38 func (p badStoragePiece) Completion() storage.Completion {
39         return storage.Completion{Complete: true, Ok: true}
40 }
41
42 func (p badStoragePiece) MarkComplete() error {
43         return errors.New("psyyyyyyyche")
44 }
45
46 func (p badStoragePiece) MarkNotComplete() error {
47         return errors.New("psyyyyyyyche")
48 }
49
50 func (p badStoragePiece) randomlyTruncatedDataString() string {
51         return "hello, world\n"[:rand.Intn(14)]
52 }
53
54 func (p badStoragePiece) ReadAt(b []byte, off int64) (n int, err error) {
55         r := strings.NewReader(p.randomlyTruncatedDataString())
56         return r.ReadAt(b, off+p.p.Offset())
57 }