From d4a31d412732f03815a1e59575e9425ab0f4484a Mon Sep 17 00:00:00 2001 From: Tadge Dryja Date: Mon, 18 Jan 2016 20:43:02 -0800 Subject: [PATCH] add initial unit test for elkrem send / receive --- elkrem/elkrem_test.go | 69 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 elkrem/elkrem_test.go diff --git a/elkrem/elkrem_test.go b/elkrem/elkrem_test.go new file mode 100644 index 00000000..459a6dc6 --- /dev/null +++ b/elkrem/elkrem_test.go @@ -0,0 +1,69 @@ +package elkrem + +import ( + "testing" + + "github.com/btcsuite/btcd/wire" +) + +// TestElkremBig makes a height 63 (max size possible) tree and tries 10K hashes +func TestElkremBig(t *testing.T) { + ex := NewElkremSender(63, wire.DoubleSha256SH([]byte("elktest"))) + rcv := NewElkremReceiver(63) + for n := uint64(0); n < 10000; n++ { + sha, err := ex.AtIndex(n) + if err != nil { + t.Fatal(err) + } + err = rcv.AddNext(sha) + if err != nil { + t.Fatal(err) + } + if n%1000 == 999 { + t.Logf("stack with %d received hashes\n", n+1) + for i, n := range rcv.s { + t.Logf("Stack element %d: index %d height %d %s\n", + i, n.i, n.h, n.sha.String()) + } + } + } + for n := uint64(0); n < 10000; n += 500 { + sha, err := rcv.AtIndex(n) + if err != nil { + t.Fatal(err) + } + t.Logf("Retreived index %d %s\n", + n, sha.String()) + } +} + +// TestElkremSmall makes a height 15 (65534 size) tree and tries 10K hashes +func TestElkremSmall(t *testing.T) { + ex := NewElkremSender(15, wire.DoubleSha256SH([]byte("elktest"))) + rcv := NewElkremReceiver(15) + for n := uint64(0); n < 5000; n++ { + sha, err := ex.AtIndex(n) + if err != nil { + t.Fatal(err) + } + err = rcv.AddNext(sha) + if err != nil { + t.Fatal(err) + } + if n%1000 == 999 { + t.Logf("stack with %d received hashes\n", n+1) + for i, n := range rcv.s { + t.Logf("Stack element %d: index %d height %d %s\n", + i, n.i, n.h, n.sha.String()) + } + } + } + for n := uint64(0); n < 5000; n += 500 { + sha, err := rcv.AtIndex(n) + if err != nil { + t.Fatal(err) + } + t.Logf("Retreived index %d %s\n", + n, sha.String()) + } +}