// Copyright 2009 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. // This test tests some internals of the flate package. // The tests in package compress/gzip serve as the // end-to-end test of the decompressor. package flate import ( "bytes" "testing" ) func TestUncompressedSource(t *testing.T) { decoder := NewReader(bytes.NewReader([]byte{0x01, 0x01, 0x00, 0xfe, 0xff, 0x11})) output := make([]byte, 1) n, error := decoder.Read(output) if n != 1 || error != nil { t.Fatalf("decoder.Read() = %d, %v, want 1, nil", n, error) } if output[0] != 0x11 { t.Errorf("output[0] = %x, want 0x11", output[0]) } } // The following test should not panic. func TestIssue5915(t *testing.T) { bits := []int{4, 0, 0, 6, 4, 3, 2, 3, 3, 4, 4, 5, 0, 0, 0, 0, 5, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 6, 0, 11, 0, 8, 0, 6, 6, 10, 8} h := new(huffmanDecoder) ok := h.init(bits) if ok == true { t.Fatalf("Given sequence of bits is bad, and should not succeed.") } } // The following test should not panic. func TestIssue5962(t *testing.T) { bits := []int{4, 0, 0, 6, 4, 3, 2, 3, 3, 4, 4, 5, 0, 0, 0, 0, 5, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11} h := new(huffmanDecoder) ok := h.init(bits) if ok == true { t.Fatalf("Given sequence of bits is bad, and should not succeed.") } } // The following test should not panic. func TestIssue6255(t *testing.T) { bits1 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11} bits2 := []int{11, 13} h := new(huffmanDecoder) if !h.init(bits1) { t.Fatalf("Given sequence of bits is good and should succeed.") } if h.init(bits2) { t.Fatalf("Given sequence of bits is bad and should not succeed.") } }