-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathzlib_cgo_test.go
48 lines (43 loc) · 1.17 KB
/
zlib_cgo_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// +build cgo
package zlibng_test
import (
"bytes"
"io"
"testing"
"time"
"github.com/grailbio/testutil/assert"
"github.com/klauspost/compress/gzip"
"github.com/yasushi-saito/zlibng"
)
func TestDeflateHeader(t *testing.T) {
out := bytes.Buffer{}
zout, err := zlibng.NewWriter(&out)
assert.NoError(t, err)
now := time.Unix(time.Now().Unix(), 0)
wantHeader := zlibng.GzipHeader{Comment: "hello", Name: "blah", Extra: []byte{3, 2, 1}, ModTime: now, OS: 11}
assert.NoError(t, zout.SetHeader(wantHeader))
data := []byte("testdata")
n, err := zout.Write(data)
assert.NoError(t, err)
assert.EQ(t, n, len(data))
assert.NoError(t, zout.Close())
{
zin, err := zlibng.NewReader(bytes.NewReader(out.Bytes()))
assert.NoError(t, err)
got := bytes.Buffer{}
_, err = io.Copy(&got, zin)
assert.NoError(t, err)
assert.EQ(t, string(got.Bytes()), string(data))
gotHeader, err := zin.Header()
assert.NoError(t, err)
assert.EQ(t, gotHeader, wantHeader)
}
{
zin, err := gzip.NewReader(bytes.NewReader(out.Bytes()))
assert.NoError(t, err)
got := bytes.Buffer{}
_, err = io.Copy(&got, zin)
assert.NoError(t, err)
assert.EQ(t, string(got.Bytes()), string(data))
}
}