lexer_io_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package jsoniter
  2. import (
  3. "testing"
  4. "bytes"
  5. "io"
  6. )
  7. func Test_read_by_one(t *testing.T) {
  8. lexer := NewLexer(bytes.NewBufferString("abc"), 1)
  9. b, err := lexer.readByte()
  10. if err != nil {
  11. t.Fatal(err)
  12. }
  13. if b != 'a' {
  14. t.Fatal(b)
  15. }
  16. err = lexer.unreadByte()
  17. if err != nil {
  18. t.Fatal(err)
  19. }
  20. err = lexer.unreadByte()
  21. if err == nil {
  22. t.FailNow()
  23. }
  24. b, err = lexer.readByte()
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. if b != 'a' {
  29. t.Fatal(b)
  30. }
  31. }
  32. func Test_read_by_two(t *testing.T) {
  33. lexer := NewLexer(bytes.NewBufferString("abc"), 2)
  34. b, err := lexer.readByte()
  35. if err != nil {
  36. t.Fatal(err)
  37. }
  38. if b != 'a' {
  39. t.Fatal(b)
  40. }
  41. b, err = lexer.readByte()
  42. if err != nil {
  43. t.Fatal(err)
  44. }
  45. if b != 'b' {
  46. t.Fatal(b)
  47. }
  48. err = lexer.unreadByte()
  49. if err != nil {
  50. t.Fatal(err)
  51. }
  52. err = lexer.unreadByte()
  53. if err != nil {
  54. t.Fatal(err)
  55. }
  56. b, err = lexer.readByte()
  57. if err != nil {
  58. t.Fatal(err)
  59. }
  60. if b != 'a' {
  61. t.Fatal(b)
  62. }
  63. }
  64. func Test_read_until_eof(t *testing.T) {
  65. lexer := NewLexer(bytes.NewBufferString("abc"), 2)
  66. lexer.readByte()
  67. lexer.readByte()
  68. b, err := lexer.readByte()
  69. if err != nil {
  70. t.Fatal(err)
  71. }
  72. if b != 'c' {
  73. t.Fatal(b)
  74. }
  75. _, err = lexer.readByte()
  76. if err != io.EOF {
  77. t.Fatal(err)
  78. }
  79. }