"lukechampine.com/blake3"
)
-func TestMTHSymmetric(t *testing.T) {
+func TestMTHSeqSymmetric(t *testing.T) {
xof := blake3.New(32, nil).XOF()
f := func(size uint32, offset uint32) bool {
size %= 2 * 1024 * 1024
}
offset = offset % size
- mth := MTHNew(int64(size), 0)
+ mth := MTHSeqNew(int64(size), 0)
if _, err := io.Copy(mth, bytes.NewReader(data)); err != nil {
panic(err)
}
hsh0 := mth.Sum(nil)
- mth = MTHNew(int64(size), int64(offset))
+ mth = MTHSeqNew(int64(size), int64(offset))
if _, err := io.Copy(mth, bytes.NewReader(data[int(offset):])); err != nil {
panic(err)
}
- if _, err := mth.PrependFrom(bytes.NewReader(data)); err != nil {
+ if _, err := mth.PreaddFrom(bytes.NewReader(data), "", false); err != nil {
panic(err)
}
if bytes.Compare(hsh0, mth.Sum(nil)) != 0 {
return false
}
- mth = MTHNew(0, 0)
+ mth = MTHSeqNew(0, 0)
mth.Write(data)
if bytes.Compare(hsh0, mth.Sum(nil)) != 0 {
return false
}
data = append(data, 0)
- mth = MTHNew(int64(size)+1, 0)
+ mth = MTHSeqNew(int64(size)+1, 0)
if _, err := io.Copy(mth, bytes.NewReader(data)); err != nil {
panic(err)
}
return false
}
- mth = MTHNew(int64(size)+1, int64(offset))
+ mth = MTHSeqNew(int64(size)+1, int64(offset))
if _, err := io.Copy(mth, bytes.NewReader(data[int(offset):])); err != nil {
panic(err)
}
- if _, err := mth.PrependFrom(bytes.NewReader(data)); err != nil {
+ if _, err := mth.PreaddFrom(bytes.NewReader(data), "", false); err != nil {
panic(err)
}
if bytes.Compare(hsh00, mth.Sum(nil)) != 0 {
return false
}
- mth = MTHNew(0, 0)
+ mth = MTHSeqNew(0, 0)
mth.Write(data)
if bytes.Compare(hsh00, mth.Sum(nil)) != 0 {
return false
}
}
+func TestMTHSeqAndFatEqual(t *testing.T) {
+ xof := blake3.New(32, nil).XOF()
+ f := func(size uint32, offset uint32) bool {
+ size %= 10 * 1024 * 1024
+ data := make([]byte, int(size), int(size)+1)
+ if _, err := io.ReadFull(xof, data); err != nil {
+ panic(err)
+ }
+ fat := MTHFatNew()
+ if _, err := io.Copy(fat, bytes.NewReader(data)); err != nil {
+ panic(err)
+ }
+ hshFat := fat.Sum(nil)
+ seq := MTHSeqNew(int64(size), 0)
+ if _, err := io.Copy(seq, bytes.NewReader(data)); err != nil {
+ panic(err)
+ }
+ return bytes.Compare(hshFat, seq.Sum(nil)) == 0
+ }
+ if err := quick.Check(f, nil); err != nil {
+ t.Error(err)
+ }
+}
+
func TestMTHNull(t *testing.T) {
- mth := MTHNew(0, 0)
- if _, err := mth.Write(nil); err != nil {
+ fat := MTHFatNew()
+ if _, err := fat.Write(nil); err != nil {
t.Error(err)
}
- mth.Sum(nil)
+ hshFat := fat.Sum(nil)
+
+ seq := MTHSeqNew(0, 0)
+ if _, err := seq.Write(nil); err != nil {
+ t.Error(err)
+ }
+ if bytes.Compare(hshFat, seq.Sum(nil)) != 0 {
+ t.FailNow()
+ }
}