storage/pkg/chunked/compressor/compressor_test.go

91 lines
1.6 KiB
Go

package compressor
import (
"bufio"
"bytes"
"io"
"testing"
)
func TestHole(t *testing.T) {
data := []byte("\x00\x00\x00\x00\x00")
hf := &holesFinder{
threshold: 1,
reader: bufio.NewReader(bytes.NewReader(data)),
}
hole, _, err := hf.readByte()
if err != nil {
t.Errorf("got error: %v", err)
}
if hole != 5 {
t.Error("expected hole not found")
}
if _, _, err := hf.readByte(); err != io.EOF {
t.Errorf("EOF not found")
}
hf = &holesFinder{
threshold: 1000,
reader: bufio.NewReader(bytes.NewReader(data)),
}
for i := 0; i < 5; i++ {
hole, b, err := hf.readByte()
if err != nil {
t.Errorf("got error: %v", err)
}
if hole != 0 {
t.Error("hole found")
}
if b != 0 {
t.Error("wrong read")
}
}
if _, _, err := hf.readByte(); err != io.EOF {
t.Error("didn't receive EOF")
}
}
func TestTwoHoles(t *testing.T) {
data := []byte("\x00\x00\x00\x00\x00FOO\x00\x00\x00\x00\x00")
hf := &holesFinder{
threshold: 2,
reader: bufio.NewReader(bytes.NewReader(data)),
}
hole, _, err := hf.readByte()
if err != nil {
t.Errorf("got error: %v", err)
}
if hole != 5 {
t.Error("hole not found")
}
for _, e := range []byte("FOO") {
hole, c, err := hf.readByte()
if err != nil {
t.Errorf("got error: %v", err)
}
if hole != 0 {
t.Error("hole found")
}
if c != e {
t.Errorf("wrong byte read %v instead of %v", c, e)
}
}
hole, _, err = hf.readByte()
if err != nil {
t.Errorf("got error: %v", err)
}
if hole != 5 {
t.Error("expected hole not found")
}
if _, _, err := hf.readByte(); err != io.EOF {
t.Error("didn't receive EOF")
}
}