resp_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package goredis
  2. import (
  3. "bufio"
  4. "bytes"
  5. "reflect"
  6. "testing"
  7. )
  8. func TestResp(t *testing.T) {
  9. var buf bytes.Buffer
  10. reader := NewRespReader(bufio.NewReader(&buf))
  11. writer := NewRespWriter(bufio.NewWriter(&buf))
  12. if err := writer.WriteCommand("SELECT", 1); err != nil {
  13. t.Fatal(err)
  14. } else {
  15. if reqs, err := reader.ParseRequest(); err != nil {
  16. t.Fatal(err)
  17. } else if len(reqs) != 2 {
  18. t.Fatal(len(reqs))
  19. } else if string(reqs[0]) != "SELECT" {
  20. t.Fatal(string(reqs[0]))
  21. } else if string(reqs[1]) != "1" {
  22. t.Fatal(string(reqs[1]))
  23. }
  24. }
  25. if err := writer.FlushInteger(10); err != nil {
  26. t.Fatal(err)
  27. } else {
  28. if n, err := Int64(reader.Parse()); err != nil {
  29. t.Fatal(err)
  30. } else if n != 10 {
  31. t.Fatal(n)
  32. }
  33. }
  34. if err := writer.FlushString("abc"); err != nil {
  35. t.Fatal(err)
  36. } else {
  37. if s, err := String(reader.Parse()); err != nil {
  38. t.Fatal(err)
  39. } else if s != "abc" {
  40. t.Fatal(s)
  41. }
  42. }
  43. if err := writer.FlushBulk([]byte("abc")); err != nil {
  44. t.Fatal(err)
  45. } else {
  46. if s, err := String(reader.Parse()); err != nil {
  47. t.Fatal(err)
  48. } else if s != "abc" {
  49. t.Fatal(s)
  50. }
  51. }
  52. ay := []interface{}{[]byte("SET"), []byte("a"), []byte("1")}
  53. if err := writer.FlushArray(ay); err != nil {
  54. t.Fatal(err)
  55. } else {
  56. if oy, err := reader.Parse(); err != nil {
  57. t.Fatal(err)
  58. } else if !reflect.DeepEqual(oy, ay) {
  59. t.Fatalf("%#v", oy)
  60. }
  61. }
  62. e := Error("hello world")
  63. if err := writer.FlushError(e); err != nil {
  64. t.Fatal(err)
  65. } else {
  66. if ee, err := reader.Parse(); err != nil {
  67. t.Fatal("must error")
  68. } else if !reflect.DeepEqual(e, ee) {
  69. t.Fatal(ee)
  70. }
  71. }
  72. }