miniflux-v2/vendor/github.com/tdewolff/parse/buffer/reader_test.go
Frédéric Guillot 8ffb773f43 First commit
2017-11-19 22:01:46 -08:00

50 lines
1.2 KiB
Go

package buffer // import "github.com/tdewolff/parse/buffer"
import (
"bytes"
"fmt"
"io"
"testing"
"github.com/tdewolff/test"
)
func TestReader(t *testing.T) {
s := []byte("abcde")
r := NewReader(s)
test.Bytes(t, r.Bytes(), s, "reader must return bytes stored")
buf := make([]byte, 3)
n, err := r.Read(buf)
test.T(t, err, nil, "error")
test.That(t, n == 3, "first read must read 3 characters")
test.Bytes(t, buf, []byte("abc"), "first read must match 'abc'")
n, err = r.Read(buf)
test.T(t, err, nil, "error")
test.That(t, n == 2, "second read must read 2 characters")
test.Bytes(t, buf[:n], []byte("de"), "second read must match 'de'")
n, err = r.Read(buf)
test.T(t, err, io.EOF, "error")
test.That(t, n == 0, "third read must read 0 characters")
n, err = r.Read(nil)
test.T(t, err, nil, "error")
test.That(t, n == 0, "read to nil buffer must return 0 characters read")
r.Reset()
n, err = r.Read(buf)
test.T(t, err, nil, "error")
test.That(t, n == 3, "read after reset must read 3 characters")
test.Bytes(t, buf, []byte("abc"), "read after reset must match 'abc'")
}
func ExampleNewReader() {
r := NewReader([]byte("Lorem ipsum"))
w := &bytes.Buffer{}
io.Copy(w, r)
fmt.Println(w.String())
// Output: Lorem ipsum
}