amp: add Merge and Zero to Sharer interface

This commit is contained in:
Johan T. Halseth committed 2021-04-27 09:45:14 +02:00
1 parent e1399fb1ec
commit c1e82e534d
2 files changed
+64

No files matched your search

+28
View File
@@ -10,6 +10,7 @@ import (
type sharerTest struct {
name string
numShares int
merge bool
}
var sharerTests = []sharerTest{
@@ -25,6 +26,16 @@ var sharerTests = []sharerTest{
name: "many shares",
numShares: 10,
},
{
name: "merge 4 shares",
numShares: 4,
merge: true,
},
{
name: "merge many shares",
numShares: 20,
merge: true,
},
}
// TestSharer executes the end-to-end derivation between sender and receiver,
@@ -71,10 +82,27 @@ func testSharer(t *testing.T, test sharerTest) {
// Compute the final share and finalize the sharing.
child := sharer.Child(0)
sharer = sharer.Zero()
assertChildShare(t, child, 0)
children = append(children, child)
// If we are testing merging, merge half of the created children back
// into the sharer.
if test.merge {
for i := len(children) / 2; i < len(children); i++ {
sharer = sharer.Merge(children[i])
}
children = children[:len(children)/2]
// We must create a new last child from what we just merged
// back.
child := sharer.Child(0)
assertChildShare(t, child, 0)
children = append(children, child)
}
assertReconstruction(t, children...)
}