144 lines
4.2 KiB
Go
144 lines
4.2 KiB
Go
package erasureencode
|
|
|
|
import (
|
|
// "fmt"
|
|
"bytes"
|
|
"io"
|
|
"testing"
|
|
)
|
|
|
|
var simpleDecodeMeta = &EEMeta{
|
|
Params: Params{
|
|
Size: 0,
|
|
Stride: 2,
|
|
Shards: 3,
|
|
Parity: 2,
|
|
},
|
|
}
|
|
|
|
func TestDecode_EvenStride_Full(t *testing.T) {
|
|
expected := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11}
|
|
simpleDecodeMeta.Params.Size = uint64(len(expected))
|
|
|
|
inputs := []io.ReadSeeker{
|
|
bytes.NewReader([]byte{0x00, 0x01, 0x06, 0x07, 0x0c, 0x0d}),
|
|
bytes.NewReader([]byte{0x02, 0x03, 0x08, 0x09, 0x0e, 0x0f}),
|
|
bytes.NewReader([]byte{0x04, 0x05, 0x0a, 0x0b, 0x10, 0x11}),
|
|
}
|
|
|
|
output := &bytes.Buffer{}
|
|
if err := Decode(inputs, output, simpleDecodeMeta); err != nil {
|
|
t.Errorf(`Error: %s`, err)
|
|
}
|
|
|
|
actual := output.Bytes()
|
|
if !bytes.Equal(actual, expected) {
|
|
t.Errorf(`Expected %x to equal %x`, actual, expected)
|
|
}
|
|
}
|
|
|
|
func TestDecode_EvenStride_Short1(t *testing.T) {
|
|
expected := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10}
|
|
simpleDecodeMeta.Params.Size = uint64(len(expected))
|
|
|
|
inputs := []io.ReadSeeker{
|
|
bytes.NewReader([]byte{0x00, 0x01, 0x06, 0x07, 0x0c, 0x0d}),
|
|
bytes.NewReader([]byte{0x02, 0x03, 0x08, 0x09, 0x0e, 0x0f}),
|
|
bytes.NewReader([]byte{0x04, 0x05, 0x0a, 0x0b, 0x10, 0x00}),
|
|
}
|
|
|
|
output := &bytes.Buffer{}
|
|
if err := Decode(inputs, output, simpleDecodeMeta); err != nil {
|
|
t.Errorf(`Error: %s`, err)
|
|
}
|
|
|
|
actual := output.Bytes()
|
|
if !bytes.Equal(actual, expected) {
|
|
t.Errorf(`Expected %x to equal %x`, actual, expected)
|
|
}
|
|
}
|
|
|
|
func TestDecode_EvenStride_Short2(t *testing.T) {
|
|
expected := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
|
|
simpleDecodeMeta.Params.Size = uint64(len(expected))
|
|
|
|
inputs := []io.ReadSeeker{
|
|
bytes.NewReader([]byte{0x00, 0x01, 0x06, 0x07, 0x0c, 0x0d}),
|
|
bytes.NewReader([]byte{0x02, 0x03, 0x08, 0x09, 0x0e, 0x0f}),
|
|
bytes.NewReader([]byte{0x04, 0x05, 0x0a, 0x0b, 0x00, 0x00}),
|
|
}
|
|
|
|
output := &bytes.Buffer{}
|
|
if err := Decode(inputs, output, simpleDecodeMeta); err != nil {
|
|
t.Errorf(`Error: %s`, err)
|
|
}
|
|
|
|
actual := output.Bytes()
|
|
if !bytes.Equal(actual, expected) {
|
|
t.Errorf(`Expected %x to equal %x`, actual, expected)
|
|
}
|
|
}
|
|
|
|
func TestDecode_OddStride_Full(t *testing.T) {
|
|
expected := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e}
|
|
simpleDecodeMeta.Params.Size = uint64(len(expected))
|
|
|
|
inputs := []io.ReadSeeker{
|
|
bytes.NewReader([]byte{0x00, 0x01, 0x06, 0x07, 0x0c}),
|
|
bytes.NewReader([]byte{0x02, 0x03, 0x08, 0x09, 0x0d}),
|
|
bytes.NewReader([]byte{0x04, 0x05, 0x0a, 0x0b, 0x0e}),
|
|
}
|
|
|
|
output := &bytes.Buffer{}
|
|
if err := Decode(inputs, output, simpleDecodeMeta); err != nil {
|
|
t.Errorf(`Error: %s`, err)
|
|
}
|
|
|
|
actual := output.Bytes()
|
|
if !bytes.Equal(actual, expected) {
|
|
t.Errorf(`Expected %x to equal %x`, actual, expected)
|
|
}
|
|
}
|
|
|
|
func TestDecode_OddStride_Short1(t *testing.T) {
|
|
expected := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d}
|
|
simpleDecodeMeta.Params.Size = uint64(len(expected))
|
|
|
|
inputs := []io.ReadSeeker{
|
|
bytes.NewReader([]byte{0x00, 0x01, 0x06, 0x07, 0x0c}),
|
|
bytes.NewReader([]byte{0x02, 0x03, 0x08, 0x09, 0x0d}),
|
|
bytes.NewReader([]byte{0x04, 0x05, 0x0a, 0x0b, 0x00}),
|
|
}
|
|
|
|
output := &bytes.Buffer{}
|
|
if err := Decode(inputs, output, simpleDecodeMeta); err != nil {
|
|
t.Errorf(`Error: %s`, err)
|
|
}
|
|
|
|
actual := output.Bytes()
|
|
if !bytes.Equal(actual, expected) {
|
|
t.Errorf(`Expected %x to equal %x`, actual, expected)
|
|
}
|
|
}
|
|
|
|
func TestDecode_OddStride_Short2(t *testing.T) {
|
|
expected := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c}
|
|
simpleDecodeMeta.Params.Size = uint64(len(expected))
|
|
|
|
inputs := []io.ReadSeeker{
|
|
bytes.NewReader([]byte{0x00, 0x01, 0x06, 0x07, 0x0c}),
|
|
bytes.NewReader([]byte{0x02, 0x03, 0x08, 0x09, 0x00}),
|
|
bytes.NewReader([]byte{0x04, 0x05, 0x0a, 0x0b, 0x00}),
|
|
}
|
|
|
|
output := &bytes.Buffer{}
|
|
if err := Decode(inputs, output, simpleDecodeMeta); err != nil {
|
|
t.Errorf(`Error: %s`, err)
|
|
}
|
|
|
|
actual := output.Bytes()
|
|
if !bytes.Equal(actual, expected) {
|
|
t.Errorf(`Expected %x to equal %x`, actual, expected)
|
|
}
|
|
}
|