mirror of
https://github.com/golang/go.git
synced 2024-09-30 14:57:10 +00:00
compress/zlib: actually use provided dictionary.
R=rsc, bradfitz, bradfitzgoog CC=golang-dev https://golang.org/cl/4518056
This commit is contained in:
parent
158970ea66
commit
d080a1cf14
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user