noclose_test.go 699 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package readers
  2. import (
  3. "errors"
  4. "io"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. var errRead = errors.New("read error")
  9. type readOnly struct{}
  10. func (readOnly) Read(p []byte) (n int, err error) {
  11. return 0, io.EOF
  12. }
  13. type readClose struct{}
  14. func (readClose) Read(p []byte) (n int, err error) {
  15. return 0, errRead
  16. }
  17. func (readClose) Close() (err error) {
  18. return io.EOF
  19. }
  20. func TestNoCloser(t *testing.T) {
  21. assert.Equal(t, nil, NoCloser(nil))
  22. ro := readOnly{}
  23. assert.Equal(t, ro, NoCloser(ro))
  24. rc := readClose{}
  25. nc := NoCloser(rc)
  26. assert.NotEqual(t, nc, rc)
  27. _, hasClose := nc.(io.Closer)
  28. assert.False(t, hasClose)
  29. _, err := nc.Read(nil)
  30. assert.Equal(t, errRead, err)
  31. }