91 lines
1.6 KiB
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")
|
|
}
|
|
}
|