X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fmth_test.go;h=f3c5dfe702875bbde1a7d2b322b7dd91e10bac5a;hb=0367cce2741e1ce6a89a49fd5c4e9df6005c9744;hp=2d36f07a95067eb8f3eb9b52cf0cc50d3ce34acd;hpb=0fad171c0d79ad583c0faf5427e22d1d62a0a52d;p=nncp.git diff --git a/src/mth_test.go b/src/mth_test.go index 2d36f07..f3c5dfe 100644 --- a/src/mth_test.go +++ b/src/mth_test.go @@ -1,6 +1,6 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2021 Sergey Matveev +Copyright (C) 2016-2022 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ import ( "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 @@ -36,31 +36,31 @@ func TestMTHSymmetric(t *testing.T) { } 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) } @@ -69,18 +69,18 @@ func TestMTHSymmetric(t *testing.T) { 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 @@ -93,10 +93,42 @@ func TestMTHSymmetric(t *testing.T) { } } +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() + } }