arnaucube
arnaucube/kestoPublic Self-hosted repository
kesto/treeinterface/arbotree/wrapper_test.go
treeinterface/arbotree/wrapper_test.goRaw
 1package arbotree
 2
 3import (
 4	"testing"
 5
 6	"go.vocdoni.io/dvote/censustree"
 7)
 8
 9func TestInterface(t *testing.T) {
10	storage := t.TempDir()
11	tree := &Tree{}
12	err := tree.Init("test", storage)
13	if err != nil {
14		t.Fatal(err)
15	}
16
17	var i interface{} = tree
18	_, ok := i.(censustree.Tree)
19	if !ok {
20		t.Fatal("censustree interface not matched by arbotree wrapper")
21	}
22}
23
24func TestGenProof(t *testing.T) {
25	storage := t.TempDir()
26	tr1 := &Tree{}
27	err := tr1.Init("test1", storage)
28	if err != nil {
29		t.Fatal(err)
30	}
31
32	var keys, values [][]byte
33	for i := 0; i < 10; i++ {
34		keys = append(keys, []byte{byte(i)})
35		values = append(values, []byte{byte(i)})
36		err = tr1.Add([]byte{byte(i)}, []byte{byte(i)})
37		if err != nil {
38			t.Fatal(err)
39		}
40	}
41
42	for i := 0; i < 10; i++ {
43		p, err := tr1.GenProof(keys[i], values[i])
44		if err != nil {
45			t.Fatal(err)
46		}
47		v, err := tr1.CheckProof(keys[i], values[i], tr1.Root(), p)
48		if err != nil {
49			t.Fatal(err)
50		}
51		if !v {
52			t.Fatal("CheckProof failed")
53		}
54	}
55}