package mtf
import (
diff "0dev.org/diff"
"bytes"
"io"
"testing"
)
func TestEncoder(t *testing.T) {
var (
input []byte = []byte{1, 1, 0, 0}
expected []byte = []byte{1, 0, 1, 0}
buffer bytes.Buffer
encoder io.Writer = Encoder(&buffer)
)
count, err := encoder.Write(input)
if count != len(input) {
t.Error("Unexpected write count from encoder", count)
}
if err != nil {
t.Error("Unexpected write error from encoder", err)
}
output := buffer.Bytes()
// Diff the output against the expected result
delta := diff.Diff(diff.D{Len1: len(expected), Len2: len(output),
EqualFunc: func(i, j int) bool { return expected[i] == output[j] }})
if len(delta.Added) > 0 || len(delta.Removed) > 0 {
t.Error("Differences detected ", delta)
}
}
func TestDecoder(t *testing.T) {
var (
input []byte = []byte{1, 0, 1, 0}
expected []byte = []byte{1, 1, 0, 0}
output []byte = make([]byte, 4)
reader *bytes.Reader = bytes.NewReader(input)
decoder io.Reader = Decoder(reader)
)
count, err := decoder.Read(output)
if count != len(output) {
t.Error("Unexpected read count from decoder", count)
}
if err != nil {
t.Error("Unexpected read error from decoder", err)
}
// Diff the output against the expected result
delta := diff.Diff(diff.D{Len1: len(expected), Len2: len(output),
EqualFunc: func(i, j int) bool { return expected[i] == output[j] }})
if len(delta.Added) > 0 || len(delta.Removed) > 0 {
t.Error("Differences detected ", delta)
}
}