1
0

gzip_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package codec
  2. import (
  3. "bytes"
  4. "compress/gzip"
  5. "errors"
  6. "fmt"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestGzip(t *testing.T) {
  11. var buf bytes.Buffer
  12. for i := 0; i < 10000; i++ {
  13. fmt.Fprint(&buf, i)
  14. }
  15. bs := Gzip(buf.Bytes())
  16. actual, err := Gunzip(bs)
  17. assert.Nil(t, err)
  18. assert.True(t, len(bs) < buf.Len())
  19. assert.Equal(t, buf.Bytes(), actual)
  20. }
  21. func TestGunzip(t *testing.T) {
  22. tests := []struct {
  23. name string
  24. input []byte
  25. expected []byte
  26. expectedErr error
  27. }{
  28. {
  29. name: "valid input",
  30. input: func() []byte {
  31. var buf bytes.Buffer
  32. gz := gzip.NewWriter(&buf)
  33. gz.Write([]byte("hello"))
  34. gz.Close()
  35. return buf.Bytes()
  36. }(),
  37. expected: []byte("hello"),
  38. expectedErr: nil,
  39. },
  40. {
  41. name: "invalid input",
  42. input: []byte("invalid input"),
  43. expected: nil,
  44. expectedErr: gzip.ErrHeader,
  45. },
  46. }
  47. for _, test := range tests {
  48. t.Run(test.name, func(t *testing.T) {
  49. result, err := Gunzip(test.input)
  50. if !bytes.Equal(result, test.expected) {
  51. t.Errorf("unexpected result: %v", result)
  52. }
  53. if !errors.Is(err, test.expectedErr) {
  54. t.Errorf("unexpected error: %v", err)
  55. }
  56. })
  57. }
  58. }