1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
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, byte, err := hf.ReadByte()
if err != nil {
t.Errorf("got error: %v", err)
}
if hole != 0 {
t.Error("hole found")
}
if byte != 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")
}
}
|