Files
poseidon/pkg/nullio/nullio_test.go
2022-10-05 12:11:47 +01:00

54 lines
1.2 KiB
Go

package nullio
import (
"context"
"github.com/stretchr/testify/assert"
"io"
"testing"
"time"
)
const shortTimeout = 100 * time.Millisecond
func TestReader_Read(t *testing.T) {
read := func(reader io.Reader, ret chan<- bool) {
p := make([]byte, 0, 5)
_, err := reader.Read(p)
assert.ErrorIs(t, io.EOF, err)
close(ret)
}
t.Run("WithContext_DoesNotReturnImmediately", func(t *testing.T) {
readingContext, cancel := context.WithCancel(context.Background())
defer cancel()
readerReturned := make(chan bool)
go read(&Reader{readingContext}, readerReturned)
select {
case <-readerReturned:
assert.Fail(t, "The reader returned before the timeout was reached")
case <-time.After(shortTimeout):
}
})
t.Run("WithoutContext_DoesReturnImmediately", func(t *testing.T) {
readerReturned := make(chan bool)
go read(&Reader{}, readerReturned)
select {
case <-readerReturned:
case <-time.After(shortTimeout):
assert.Fail(t, "The reader returned before the timeout was reached")
}
})
}
func TestReadWriterWritesEverything(t *testing.T) {
readWriter := &ReadWriter{}
p := []byte{1, 2, 3}
n, err := readWriter.Write(p)
assert.NoError(t, err)
assert.Equal(t, len(p), n)
}