]> Cypherpunks repositories - gostls13.git/commitdiff
compress/zlib: actually use provided dictionary.
authorAdam Langley <agl@golang.org>
Wed, 11 May 2011 21:00:19 +0000 (17:00 -0400)
committerAdam Langley <agl@golang.org>
Wed, 11 May 2011 21:00:19 +0000 (17:00 -0400)
R=rsc, bradfitz, bradfitzgoog
CC=golang-dev
https://golang.org/cl/4518056

src/pkg/compress/zlib/writer.go
src/pkg/compress/zlib/writer_test.go

index f1f9b285375685bbd01382624ae9571e2ad43d6a..8f86e9c4ce342a48baa4bc23b1d8b48e09f1eeca 100644 (file)
@@ -89,7 +89,7 @@ func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, os.Error) {
                }
        }
        z.w = w
-       z.compressor = flate.NewWriter(w, level)
+       z.compressor = flate.NewWriterDict(w, level, dict)
        z.digest = adler32.New()
        return z, nil
 }
index f94f28470065effa9821e66e586f77e0a4736c03..a06689ee50f7f0517f6e2c1607151c23677828e5 100644 (file)
@@ -5,6 +5,7 @@
 package zlib
 
 import (
+       "bytes"
        "io"
        "io/ioutil"
        "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)
+       }
+}