aboutsummaryrefslogtreecommitdiff
path: root/format/sideband64k/helpers_test.go
blob: c10e9e71741dfe5d6b95cebf7a7821ae4b5b770a (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package sideband64k_test

import (
	"bytes"
	"io"
)

type limitWriter struct {
	buf         bytes.Buffer
	maxPerWrite int
	flushes     int
	shortWrite  bool
}

func (w *limitWriter) Write(p []byte) (int, error) {
	if w.shortWrite {
		return 0, nil
	}

	if w.maxPerWrite > 0 && len(p) > w.maxPerWrite {
		p = p[:w.maxPerWrite]
	}

	return w.buf.Write(p)
}

func (w *limitWriter) Flush() error {
	w.flushes++
	return nil
}

type byteReader struct {
	data []byte
}

func (r *byteReader) Read(p []byte) (int, error) {
	if len(r.data) == 0 {
		return 0, io.EOF
	}

	p[0] = r.data[0]
	r.data = r.data[1:]
	return 1, nil
}