amp: add Merge and Zero to Sharer interface

This commit is contained in:
Johan T. Halseth
2021-04-08 12:08:06 +02:00
parent e1399fb1ec
commit c1e82e534d
2 changed files with 64 additions and 0 deletions

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...)
}