readbuffer_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package core
  2. import (
  3. "bytes"
  4. "io"
  5. "testing"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestReadSeeker(t *testing.T) {
  9. b := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  10. buf := bytes.NewReader(b)
  11. rd := NewReadBuffer(buf)
  12. rd.BufferSize = ProbeSize
  13. // 1. Read to buffer
  14. b = make([]byte, 3)
  15. n, err := rd.Read(b)
  16. require.Nil(t, err)
  17. require.Equal(t, []byte{0, 1, 2}, b[:n])
  18. // 2. Seek to start
  19. _, err = rd.Seek(0, io.SeekStart)
  20. require.Nil(t, err)
  21. // 3. Read from buffer
  22. b = make([]byte, 2)
  23. n, err = rd.Read(b)
  24. require.Nil(t, err)
  25. require.Equal(t, []byte{0, 1}, b[:n])
  26. // 4. Read from buffer
  27. n, err = rd.Read(b)
  28. require.Nil(t, err)
  29. require.Equal(t, []byte{2}, b[:n])
  30. // 5. Read to buffer
  31. n, err = rd.Read(b)
  32. require.Nil(t, err)
  33. require.Equal(t, []byte{3, 4}, b[:n])
  34. // 6. Seek to start
  35. _, err = rd.Seek(0, io.SeekStart)
  36. require.Nil(t, err)
  37. // 7. Disable buffer
  38. rd.BufferSize = -1
  39. // 8. Read from buffer
  40. b = make([]byte, 10)
  41. n, err = rd.Read(b)
  42. require.Nil(t, err)
  43. require.Equal(t, []byte{0, 1, 2, 3, 4}, b[:n])
  44. // 9. Direct read
  45. n, err = rd.Read(b)
  46. require.Nil(t, err)
  47. require.Equal(t, []byte{5, 6, 7, 8, 9}, b[:n])
  48. // 10. Check buffer empty
  49. require.Nil(t, rd.buf)
  50. }