mirror of https://github.com/dnomd343/XProxy.git
Dnomd343
1 year ago
4 changed files with 124 additions and 1 deletions
@ -0,0 +1,107 @@ |
|||
package assets |
|||
|
|||
import ( |
|||
"bytes" |
|||
"compress/gzip" |
|||
"crypto/rand" |
|||
"github.com/dsnet/compress/bzip2" |
|||
"github.com/stretchr/testify/assert" |
|||
"github.com/ulikunitz/xz" |
|||
mrand "math/rand" |
|||
"testing" |
|||
) |
|||
|
|||
const testMin = 1024 * 1024 // 1MiB
|
|||
const testMax = 4096 * 1024 // 4Mib
|
|||
|
|||
func randBytes(size int) []byte { |
|||
tmp := make([]byte, size) |
|||
_, _ = rand.Read(tmp) |
|||
return tmp |
|||
} |
|||
|
|||
func randInt(min int, max int) int { |
|||
return min + int(mrand.Float64()*float64(max-min)) |
|||
} |
|||
|
|||
func gzipCompress(data []byte) []byte { |
|||
buf := bytes.Buffer{} |
|||
gw := gzip.NewWriter(&buf) |
|||
_, _ = gw.Write(data) |
|||
_ = gw.Close() |
|||
return buf.Bytes() |
|||
} |
|||
|
|||
func bzip2Compress(data []byte) []byte { |
|||
buf := bytes.Buffer{} |
|||
bw, _ := bzip2.NewWriter(&buf, &bzip2.WriterConfig{ |
|||
Level: bzip2.DefaultCompression, |
|||
}) |
|||
_, _ = bw.Write(data) |
|||
_ = bw.Close() |
|||
return buf.Bytes() |
|||
} |
|||
|
|||
func xzCompress(data []byte) []byte { |
|||
buf := bytes.Buffer{} |
|||
xw, _ := xz.NewWriter(&buf) |
|||
_, _ = xw.Write(data) |
|||
_ = xw.Close() |
|||
return buf.Bytes() |
|||
} |
|||
|
|||
func TestGzipExtract(t *testing.T) { |
|||
raw := randBytes(randInt(testMin, testMax)) |
|||
gzOk := gzipCompress(raw) |
|||
gzErr := append(gzOk, randBytes(randInt(1, 16))...) |
|||
|
|||
ret, err := gzipExtract(gzOk) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
_, err = gzipExtract(gzErr) |
|||
assert.NotNil(t, err) |
|||
} |
|||
|
|||
func TestBzip2Extract(t *testing.T) { |
|||
raw := randBytes(randInt(testMin, testMax)) |
|||
bz2Ok := bzip2Compress(raw) |
|||
bz2Err := append(bz2Ok, randBytes(randInt(1, 16))...) |
|||
|
|||
ret, err := bzip2Extract(bz2Ok) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
_, err = bzip2Extract(bz2Err) |
|||
assert.NotNil(t, err) |
|||
} |
|||
|
|||
func TestXzExtract(t *testing.T) { |
|||
raw := randBytes(randInt(testMin, testMax)) |
|||
xzOk := xzCompress(raw) |
|||
xzErr := append(xzOk, randBytes(randInt(1, 16))...) |
|||
|
|||
ret, err := xzExtract(xzOk) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
_, err = xzExtract(xzErr) |
|||
assert.NotNil(t, err) |
|||
} |
|||
|
|||
func TestExtract(t *testing.T) { |
|||
raw := randBytes(randInt(testMin, testMax)) |
|||
|
|||
ret, err := tryExtract(raw) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
|
|||
ret, err = tryExtract(gzipCompress(raw)) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
|
|||
ret, err = tryExtract(bzip2Compress(raw)) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
|
|||
ret, err = tryExtract(xzCompress(raw)) |
|||
assert.Nil(t, err) |
|||
assert.Equal(t, raw, ret) |
|||
} |
Loading…
Reference in new issue