MCPcopy
hub / github.com/klauspost/compress / TestDecoderMaxBlockSize

Function TestDecoderMaxBlockSize

s2/decode_test.go:48–187  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

46}
47
48func TestDecoderMaxBlockSize(t *testing.T) {
49 data, err := os.ReadFile("testdata/enc_regressions.zip")
50 if err != nil {
51 t.Fatal(err)
52 }
53 zr, err := zip.NewReader(bytes.NewReader(data), int64(len(data)))
54 if err != nil {
55 t.Fatal(err)
56 }
57 sizes := []int{4 << 10, 10 << 10, 1 << 20, 4 << 20}
58 test := func(t *testing.T, data []byte) {
59 for _, size := range sizes {
60 t.Run(fmt.Sprintf("%d", size), func(t *testing.T) {
61 var buf bytes.Buffer
62 dec := NewReader(nil, ReaderMaxBlockSize(size), ReaderAllocBlock(size/2))
63 enc := NewWriter(&buf, WriterBlockSize(size), WriterPadding(16<<10), WriterPaddingSrc(zeroReader{}))
64
65 // Test writer.
66 n, err := enc.Write(data)
67 if err != nil {
68 t.Error(err)
69 return
70 }
71 if n != len(data) {
72 t.Error(fmt.Errorf("Write: Short write, want %d, got %d", len(data), n))
73 return
74 }
75 err = enc.Close()
76 if err != nil {
77 t.Error(err)
78 return
79 }
80 // Calling close twice should not affect anything.
81 err = enc.Close()
82 if err != nil {
83 t.Error(err)
84 return
85 }
86
87 dec.Reset(&buf)
88 got, err := io.ReadAll(dec)
89 if err != nil {
90 t.Error(err)
91 return
92 }
93 if !bytes.Equal(data, got) {
94 t.Error("block (reset) decoder mismatch")
95 return
96 }
97
98 // Test Reset on both and use ReadFrom instead.
99 buf.Reset()
100 enc.Reset(&buf)
101 n2, err := enc.ReadFrom(bytes.NewBuffer(data))
102 if err != nil {
103 t.Error(err)
104 return
105 }

Callers

nothing calls this directly

Calls 15

WriteMethod · 0.95
CloseMethod · 0.95
ResetMethod · 0.95
ResetMethod · 0.95
ReadFromMethod · 0.95
SkipMethod · 0.95
DecodeConcurrentMethod · 0.95
NewReaderFunction · 0.92
ReaderMaxBlockSizeFunction · 0.85
ReaderAllocBlockFunction · 0.85
WriterBlockSizeFunction · 0.85
WriterPaddingFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…