arnaucube
arnaucube/arboPublic Self-hosted repository
arbo/addbatch_test.go
addbatch_test.goRaw
 1package arbo
 2
 3import (
 4	"fmt"
 5	"math/big"
 6	"testing"
 7	"time"
 8
 9	qt "github.com/frankban/quicktest"
10	"github.com/iden3/go-merkletree/db/memory"
11)
12
13func TestAddBatchCaseA(t *testing.T) {
14	c := qt.New(t)
15
16	nLeafs := 1024
17
18	tree, err := NewTree(memory.NewMemoryStorage(), 100, HashFunctionPoseidon)
19	c.Assert(err, qt.IsNil)
20	defer tree.db.Close()
21
22	start := time.Now()
23	for i := 0; i < nLeafs; i++ {
24		k := BigIntToBytes(big.NewInt(int64(i)))
25		v := BigIntToBytes(big.NewInt(int64(i * 2)))
26		if err := tree.Add(k, v); err != nil {
27			t.Fatal(err)
28		}
29	}
30	fmt.Println(time.Since(start))
31
32	tree2, err := NewTree(memory.NewMemoryStorage(), 100, HashFunctionPoseidon)
33	c.Assert(err, qt.IsNil)
34	defer tree2.db.Close()
35
36	var keys, values [][]byte
37	for i := 0; i < nLeafs; i++ {
38		k := BigIntToBytes(big.NewInt(int64(i)))
39		v := BigIntToBytes(big.NewInt(int64(i * 2)))
40		keys = append(keys, k)
41		values = append(values, v)
42	}
43	start = time.Now()
44	indexes, err := tree2.AddBatchOpt(keys, values)
45	c.Assert(err, qt.IsNil)
46	fmt.Println(time.Since(start))
47	c.Check(len(indexes), qt.Equals, 0)
48
49	// check that both trees roots are equal
50	c.Check(tree2.Root(), qt.DeepEquals, tree.Root())
51}