textlinescanner_test.go 630 B

1234567891011121314151617181920212223242526272829303132
  1. package iox
  2. import (
  3. "strings"
  4. "testing"
  5. "testing/iotest"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestScanner(t *testing.T) {
  9. const val = `1
  10. 2
  11. 3
  12. 4`
  13. reader := strings.NewReader(val)
  14. scanner := NewTextLineScanner(reader)
  15. var lines []string
  16. for scanner.Scan() {
  17. line, err := scanner.Line()
  18. assert.Nil(t, err)
  19. lines = append(lines, line)
  20. }
  21. assert.EqualValues(t, []string{"1", "2", "3", "4"}, lines)
  22. }
  23. func TestBadScanner(t *testing.T) {
  24. scanner := NewTextLineScanner(iotest.ErrReader(iotest.ErrTimeout))
  25. assert.False(t, scanner.Scan())
  26. _, err := scanner.Line()
  27. assert.ErrorIs(t, err, iotest.ErrTimeout)
  28. }