...
Run Format

Source file src/compress/flate/inflate_test.go

Documentation: compress/flate

  // Copyright 2014 The Go Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style
  // license that can be found in the LICENSE file.
  
  package flate
  
  import (
  	"bytes"
  	"io"
  	"io/ioutil"
  	"strings"
  	"testing"
  )
  
  func TestReset(t *testing.T) {
  	ss := []string{
  		"lorem ipsum izzle fo rizzle",
  		"the quick brown fox jumped over",
  	}
  
  	deflated := make([]bytes.Buffer, 2)
  	for i, s := range ss {
  		w, _ := NewWriter(&deflated[i], 1)
  		w.Write([]byte(s))
  		w.Close()
  	}
  
  	inflated := make([]bytes.Buffer, 2)
  
  	f := NewReader(&deflated[0])
  	io.Copy(&inflated[0], f)
  	f.(Resetter).Reset(&deflated[1], nil)
  	io.Copy(&inflated[1], f)
  	f.Close()
  
  	for i, s := range ss {
  		if s != inflated[i].String() {
  			t.Errorf("inflated[%d]:\ngot  %q\nwant %q", i, inflated[i], s)
  		}
  	}
  }
  
  func TestReaderTruncated(t *testing.T) {
  	vectors := []struct{ input, output string }{
  		{"\x00", ""},
  		{"\x00\f", ""},
  		{"\x00\f\x00", ""},
  		{"\x00\f\x00\xf3\xff", ""},
  		{"\x00\f\x00\xf3\xffhello", "hello"},
  		{"\x00\f\x00\xf3\xffhello, world", "hello, world"},
  		{"\x02", ""},
  		{"\xf2H\xcd", "He"},
  		{"\xf2H͙0a\u0084\t", "Hel\x90\x90\x90\x90\x90"},
  		{"\xf2H͙0a\u0084\t\x00", "Hel\x90\x90\x90\x90\x90"},
  	}
  
  	for i, v := range vectors {
  		r := strings.NewReader(v.input)
  		zr := NewReader(r)
  		b, err := ioutil.ReadAll(zr)
  		if err != io.ErrUnexpectedEOF {
  			t.Errorf("test %d, error mismatch: got %v, want io.ErrUnexpectedEOF", i, err)
  		}
  		if string(b) != v.output {
  			t.Errorf("test %d, output mismatch: got %q, want %q", i, b, v.output)
  		}
  	}
  }
  
  func TestResetDict(t *testing.T) {
  	dict := []byte("the lorem fox")
  	ss := []string{
  		"lorem ipsum izzle fo rizzle",
  		"the quick brown fox jumped over",
  	}
  
  	deflated := make([]bytes.Buffer, len(ss))
  	for i, s := range ss {
  		w, _ := NewWriterDict(&deflated[i], DefaultCompression, dict)
  		w.Write([]byte(s))
  		w.Close()
  	}
  
  	inflated := make([]bytes.Buffer, len(ss))
  
  	f := NewReader(nil)
  	for i := range inflated {
  		f.(Resetter).Reset(&deflated[i], dict)
  		io.Copy(&inflated[i], f)
  	}
  	f.Close()
  
  	for i, s := range ss {
  		if s != inflated[i].String() {
  			t.Errorf("inflated[%d]:\ngot  %q\nwant %q", i, inflated[i], s)
  		}
  	}
  }
  

View as plain text