compress/zlib: actually use provided dictionary.

R=rsc, bradfitz, bradfitzgoog
CC=golang-dev
https://golang.org/cl/4518056
This commit is contained in:
Adam Langley 2011-05-11 17:00:19 -04:00
parent 158970ea66
commit d080a1cf14
2 changed files with 19 additions and 1 deletions

View File

@ -89,7 +89,7 @@ func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, os.Error) {
} }
} }
z.w = w z.w = w
z.compressor = flate.NewWriter(w, level) z.compressor = flate.NewWriterDict(w, level, dict)
z.digest = adler32.New() z.digest = adler32.New()
return z, nil return z, nil
} }

View File

@ -5,6 +5,7 @@
package zlib package zlib
import ( import (
"bytes"
"io" "io"
"io/ioutil" "io/ioutil"
"os" "os"
@ -121,3 +122,20 @@ func TestWriterDict(t *testing.T) {
} }
} }
} }
func TestWriterDictIsUsed(t *testing.T) {
var input = []byte("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
buf := bytes.NewBuffer(nil)
compressor, err := NewWriterDict(buf, BestCompression, input)
if err != nil {
t.Errorf("error in NewWriterDict: %s", err)
return
}
compressor.Write(input)
compressor.Close()
const expectedMaxSize = 25
output := buf.Bytes()
if len(output) > expectedMaxSize {
t.Errorf("result too large (got %d, want <= %d bytes). Is the dictionary being used?", len(output), expectedMaxSize)
}
}