package arbotree
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"go.vocdoni.io/dvote/censustree"
|
|
)
|
|
|
|
func TestInterface(t *testing.T) {
|
|
storage := t.TempDir()
|
|
tree := &Tree{}
|
|
err := tree.Init("test", storage)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var i interface{} = tree
|
|
_, ok := i.(censustree.Tree)
|
|
if !ok {
|
|
t.Fatal("censustree interface not matched by arbotree wrapper")
|
|
}
|
|
}
|
|
|
|
func TestGenProof(t *testing.T) {
|
|
storage := t.TempDir()
|
|
tr1 := &Tree{}
|
|
err := tr1.Init("test1", storage)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
var keys, values [][]byte
|
|
for i := 0; i < 10; i++ {
|
|
keys = append(keys, []byte{byte(i)})
|
|
values = append(values, []byte{byte(i)})
|
|
err = tr1.Add([]byte{byte(i)}, []byte{byte(i)})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
p, err := tr1.GenProof(keys[i], values[i])
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
v, err := tr1.CheckProof(keys[i], values[i], tr1.Root(), p)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !v {
|
|
t.Fatal("CheckProof failed")
|
|
}
|
|
}
|
|
}
|