buffer_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package ioutils
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. func TestFixedBufferWrite(t *testing.T) {
  7. buf := &fixedBuffer{buf: make([]byte, 0, 64)}
  8. n, err := buf.Write([]byte("hello"))
  9. if err != nil {
  10. t.Fatal(err)
  11. }
  12. if n != 5 {
  13. t.Fatalf("expected 5 bytes written, got %d", n)
  14. }
  15. if string(buf.buf[:5]) != "hello" {
  16. t.Fatalf("expected \"hello\", got %q", string(buf.buf[:5]))
  17. }
  18. n, err = buf.Write(bytes.Repeat([]byte{1}, 64))
  19. if err != errBufferFull {
  20. t.Fatalf("expected errBufferFull, got %v - %v", err, buf.buf[:64])
  21. }
  22. }
  23. func TestFixedBufferRead(t *testing.T) {
  24. buf := &fixedBuffer{buf: make([]byte, 0, 64)}
  25. if _, err := buf.Write([]byte("hello world")); err != nil {
  26. t.Fatal(err)
  27. }
  28. b := make([]byte, 5)
  29. n, err := buf.Read(b)
  30. if err != nil {
  31. t.Fatal(err)
  32. }
  33. if n != 5 {
  34. t.Fatalf("expected 5 bytes read, got %d - %s", n, buf.String())
  35. }
  36. if string(b) != "hello" {
  37. t.Fatalf("expected \"hello\", got %q", string(b))
  38. }
  39. n, err = buf.Read(b)
  40. if err != nil {
  41. t.Fatal(err)
  42. }
  43. if n != 5 {
  44. t.Fatalf("expected 5 bytes read, got %d", n)
  45. }
  46. if string(b) != " worl" {
  47. t.Fatalf("expected \" worl\", got %s", string(b))
  48. }
  49. b = b[:1]
  50. n, err = buf.Read(b)
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. if n != 1 {
  55. t.Fatalf("expected 1 byte read, got %d - %s", n, buf.String())
  56. }
  57. if string(b) != "d" {
  58. t.Fatalf("expected \"d\", got %s", string(b))
  59. }
  60. }