You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/core/codec/gzip_test.go

68 lines
1.2 KiB
Go

4 years ago
package codec
import (
"bytes"
"compress/gzip"
"errors"
4 years ago
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func TestGzip(t *testing.T) {
var buf bytes.Buffer
for i := 0; i < 10000; i++ {
fmt.Fprint(&buf, i)
}
bs := Gzip(buf.Bytes())
actual, err := Gunzip(bs)
assert.Nil(t, err)
assert.True(t, len(bs) < buf.Len())
assert.Equal(t, buf.Bytes(), actual)
}
func TestGunzip(t *testing.T) {
tests := []struct {
name string
input []byte
expected []byte
expectedErr error
}{
{
name: "valid input",
input: func() []byte {
var buf bytes.Buffer
gz := gzip.NewWriter(&buf)
gz.Write([]byte("hello"))
gz.Close()
return buf.Bytes()
}(),
expected: []byte("hello"),
expectedErr: nil,
},
{
name: "invalid input",
input: []byte("invalid input"),
expected: nil,
expectedErr: gzip.ErrHeader,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
result, err := Gunzip(test.input)
if !bytes.Equal(result, test.expected) {
t.Errorf("unexpected result: %v", result)
}
if !errors.Is(err, test.expectedErr) {
t.Errorf("unexpected error: %v", err)
}
})
}
}