Ctrl K
ComunidadGuías…

pkg/tarstream/tarstream_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package tarstream

import (
	"math/rand"
	"slices"
	"testing"
	"testing/iotest"
	"testing/quick"
)

func TestReader(t *testing.T) {
	err := quick.Check(func(data []byte) bool {
		tv := genRandomVec(data)
		if err := iotest.TestReader(tv, data); err != nil {
			t.Logf("got read err %v", err)
			return false
		}
		return true
	}, nil)
	if err != nil {
		t.Fatal(err)
	}
}

func genRandomVec(data []byte) *TarVec {
	var vecs []Datavec
	for len(data) > 0 {
		n := rand.Intn(len(data) + 1)
		vecData := data[:n]
		data = data[n:]
		allZeroes := !slices.ContainsFunc(vecData, func(b byte) bool {
			return b != 0
		})

		if allZeroes {
			vecs = append(vecs, PadVec{Size: int64(len(vecData))})
		} else {
			vecs = append(vecs, MemVec{Data: vecData})
		}
	}
	return NewTarVec(vecs)
}