jsoniter_io_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package jsoniter
  2. import (
  3. "bytes"
  4. "github.com/stretchr/testify/require"
  5. "io"
  6. "testing"
  7. )
  8. func Test_read_by_one(t *testing.T) {
  9. iter := Parse(ConfigDefault, bytes.NewBufferString("abc"), 1)
  10. b := iter.readByte()
  11. if iter.Error != nil {
  12. t.Fatal(iter.Error)
  13. }
  14. if b != 'a' {
  15. t.Fatal(b)
  16. }
  17. iter.unreadByte()
  18. if iter.Error != nil {
  19. t.Fatal(iter.Error)
  20. }
  21. iter.unreadByte()
  22. if iter.Error == nil {
  23. t.FailNow()
  24. }
  25. iter.Error = nil
  26. b = iter.readByte()
  27. if iter.Error != nil {
  28. t.Fatal(iter.Error)
  29. }
  30. if b != 'a' {
  31. t.Fatal(b)
  32. }
  33. }
  34. func Test_read_by_two(t *testing.T) {
  35. should := require.New(t)
  36. iter := Parse(ConfigDefault, bytes.NewBufferString("abc"), 2)
  37. b := iter.readByte()
  38. should.Nil(iter.Error)
  39. should.Equal(byte('a'), b)
  40. b = iter.readByte()
  41. should.Nil(iter.Error)
  42. should.Equal(byte('b'), b)
  43. iter.unreadByte()
  44. should.Nil(iter.Error)
  45. iter.unreadByte()
  46. should.Nil(iter.Error)
  47. b = iter.readByte()
  48. should.Nil(iter.Error)
  49. should.Equal(byte('a'), b)
  50. }
  51. func Test_read_until_eof(t *testing.T) {
  52. iter := Parse(ConfigDefault, bytes.NewBufferString("abc"), 2)
  53. iter.readByte()
  54. iter.readByte()
  55. b := iter.readByte()
  56. if iter.Error != nil {
  57. t.Fatal(iter.Error)
  58. }
  59. if b != 'c' {
  60. t.Fatal(b)
  61. }
  62. iter.readByte()
  63. if iter.Error != io.EOF {
  64. t.Fatal(iter.Error)
  65. }
  66. }