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}