forked from quic-go/quic-go
quicvarint: add Reader and Writer interfaces (#3233)
This commit is contained in:
72
quicvarint/io_test.go
Normal file
72
quicvarint/io_test.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package quicvarint
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
type nopReader struct{}
|
||||
|
||||
func (r *nopReader) Read(_ []byte) (int, error) {
|
||||
return 0, io.ErrUnexpectedEOF
|
||||
}
|
||||
|
||||
var _ io.Reader = &nopReader{}
|
||||
|
||||
type nopWriter struct{}
|
||||
|
||||
func (r *nopWriter) Write(_ []byte) (int, error) {
|
||||
return 0, io.ErrShortBuffer
|
||||
}
|
||||
|
||||
var _ io.Writer = &nopWriter{}
|
||||
|
||||
var _ = Describe("Varint I/O", func() {
|
||||
Context("Reader", func() {
|
||||
Context("NewReader", func() {
|
||||
It("passes through a Reader unchanged", func() {
|
||||
b := bytes.NewReader([]byte{0})
|
||||
r := NewReader(b)
|
||||
Expect(r).To(Equal(b))
|
||||
})
|
||||
|
||||
It("wraps an io.Reader", func() {
|
||||
n := &nopReader{}
|
||||
r := NewReader(n)
|
||||
Expect(r).ToNot(Equal(n))
|
||||
})
|
||||
})
|
||||
|
||||
It("returns an error when reading from an underlying io.Reader fails", func() {
|
||||
r := NewReader(&nopReader{})
|
||||
val, err := r.ReadByte()
|
||||
Expect(err).To(Equal(io.ErrUnexpectedEOF))
|
||||
Expect(val).To(Equal(byte(0)))
|
||||
})
|
||||
})
|
||||
|
||||
Context("Writer", func() {
|
||||
Context("NewWriter", func() {
|
||||
It("passes through a Writer unchanged", func() {
|
||||
b := &bytes.Buffer{}
|
||||
w := NewWriter(b)
|
||||
Expect(w).To(Equal(b))
|
||||
})
|
||||
|
||||
It("wraps an io.Writer", func() {
|
||||
n := &nopWriter{}
|
||||
w := NewWriter(n)
|
||||
Expect(w).ToNot(Equal(n))
|
||||
})
|
||||
})
|
||||
|
||||
It("returns an error when writing to an underlying io.Writer fails", func() {
|
||||
w := NewWriter(&nopWriter{})
|
||||
err := w.WriteByte(0)
|
||||
Expect(err).To(Equal(io.ErrShortBuffer))
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user