shithub: furgit

Download patch

ref: c888d2b4aa51f539cc4b0bef18ca6970d6ce242e
parent: a51ebbedb1147032f2f5e40b5f52019df5af0eb9
author: Runxi Yu <me@runxiyu.org>
date: Tue Nov 25 03:00:00 EST 2025

zlibx: Add more comprehensive tests

--- a/internal/zlibx/decompress_test.go
+++ b/internal/zlibx/decompress_test.go
@@ -3,6 +3,7 @@
 import (
 	"bytes"
 	stdzlib "compress/zlib"
+	"crypto/rand"
 	"testing"
 )
 
@@ -20,17 +21,122 @@
 }
 
 func TestDecompress(t *testing.T) {
-	payload := []byte("hello, zlib world!")
-	compressed := compressZlib(t, payload)
+	makeRand := func(n int) []byte {
+		b := make([]byte, n)
+		if _, err := rand.Read(b); err != nil {
+			t.Fatalf("rand.Read: %v", err)
+		}
+		return b
+	}
 
-	out, err := Decompress(compressed)
-	if err != nil {
-		t.Fatalf("Decompress: %v", err)
+	type tc struct {
+		name    string
+		payload []byte
 	}
-	defer out.Release()
 
-	if !bytes.Equal(out.Bytes(), payload) {
-		t.Fatalf("unexpected payload %q", out.Bytes())
+	tests := []tc{
+		{
+			name:    "simple-hello",
+			payload: []byte("hello, zlib world!"),
+		},
+		{
+			name:    "empty",
+			payload: []byte{},
+		},
+		{
+			name:    "single-byte",
+			payload: []byte{0x42},
+		},
+		{
+			name:    "all-zero-1k",
+			payload: bytes.Repeat([]byte{0}, 1024),
+		},
+		{
+			name:    "all-FF-1k",
+			payload: bytes.Repeat([]byte{0xFF}, 1024),
+		},
+		{
+			name:    "ascii-repeated-pattern",
+			payload: bytes.Repeat([]byte("ABC123!"), 500),
+		},
+		{
+			name: "binary-structured",
+			payload: []byte{
+				0x00, 0x01, 0x02, 0x03,
+				0x10, 0x20, 0x30, 0x40,
+				0xFF, 0xEE, 0xDD, 0xCC,
+			},
+		},
+		{
+			name:    "1k-crypto-random",
+			payload: makeRand(1024),
+		},
+		{
+			name:    "32k-crypto-random",
+			payload: makeRand(32 * 1024),
+		},
+		{
+			name:    "256k-crypto-random",
+			payload: makeRand(256 * 1024),
+		},
+		{
+			name:    "highly-compressible-large",
+			payload: bytes.Repeat([]byte("AAAAAAAAAAAAAAAAAAAA"), 50_000),
+		},
+		{
+			name:    "json",
+			payload: []byte(`{"name":"test","values":[1,2,3,4],"deep":{"x":123,"y":"abc"}}`),
+		},
+		{
+			name:    "html",
+			payload: []byte("<html><body><h1>Title</h1><p>Paragraph</p></body></html>"),
+		},
+		{
+			name: "alternating-binary-pattern",
+			payload: func() []byte {
+				b := make([]byte, 4096)
+				for i := 0; i < len(b); i++ {
+					if i%2 == 0 {
+						b[i] = 0xAA
+					} else {
+						b[i] = 0x55
+					}
+				}
+				return b
+			}(),
+		},
+		{
+			name:    "large-repetitive-words",
+			payload: bytes.Repeat([]byte("the quick brown fox jumps over the lazy dog\n"), 4000),
+		},
+		{
+			name:    "unicode",
+			payload: []byte("我不知道该说点啥就随便打点字吧🤷‍♀️"),
+		},
+		{
+			name:    "multi-meg-random-2MB",
+			payload: makeRand(2 * 1024 * 1024),
+		},
+		{
+			name:    "multi-meg-random-16MB",
+			payload: makeRand(16 * 1024 * 1024),
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			compressed := compressZlib(t, tt.payload)
+
+			out, err := Decompress(compressed)
+			if err != nil {
+				t.Fatalf("Decompress: %v", err)
+			}
+			defer out.Release()
+
+			if !bytes.Equal(out.Bytes(), tt.payload) {
+				t.Fatalf("payload mismatch: got %d bytes, want %d", len(out.Bytes()), len(tt.payload))
+			}
+		})
 	}
 }
 
--