-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeltampt_test.go
83 lines (70 loc) · 2.54 KB
/
deltampt_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package mpt
import (
"encoding/hex"
"testing"
)
func TestDeltaMpt(t *testing.T) {
k1, _ := hex.DecodeString("1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") // Key 1
v1, _ := hex.DecodeString("fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321") // Value 1
k2, _ := hex.DecodeString("4043567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") // Key 2
v2, _ := hex.DecodeString("efdcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321") // Value 2
k3, _ := hex.DecodeString("1843567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") // Key 3
v3, _ := hex.DecodeString("efdcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321") // Value 3
k4, _ := hex.DecodeString("ff34567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") // Key 4
v4, _ := hex.DecodeString("efdcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321") // Value 4
k5, _ := hex.DecodeString("bf34567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") // Key 5
v5, _ := hex.DecodeString("efdcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321") // Value 5
k6, _ := hex.DecodeString("d724567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef") // Key 6
v6, _ := hex.DecodeString("efdcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321") // Value 6
mpt, err := NewFullMPT()
if err != nil {
t.Error(err.Error())
}
deltaMpt, err := NewDeltaMPT(mpt)
if err != nil {
t.Error(err.Error())
}
deltaMpt.GetUpdatesForKey(k1)
mpt.Insert(k1, v2)
deltaMpt, err = NewDeltaMPT(mpt)
if err != nil {
t.Error(err.Error())
}
deltaMpt.GetUpdatesForKey(k1)
mpt.Insert(k5, v5)
mpt.Insert(k6, v6)
mpt.Insert(k4, v4)
mpt.Insert(k2, v2)
mpt.Insert(k3, v3)
mpt.Reset()
deltaMpt, err = NewDeltaMPT(mpt)
if err != nil {
t.Error(err.Error())
}
deltaMpt.GetUpdatesForKey(k1)
mpt.Insert(k1, v1)
deltaMpt2, err := NewDeltaMPT(mpt)
if err != nil {
t.Error(err.Error())
}
deltaMpt2.GetUpdatesForKey(k2)
deltaMpt2.GetUpdatesForKey(k3)
deltaMpt3, err := NewDeltaMPTFromBytes(deltaMpt.Bytes())
if err != nil {
t.Error(err.Error())
}
if !deltaMpt3.root.Equals(deltaMpt.root) {
t.Error("Deserialized mpt not equal to input")
}
}
func TestDeltaMptSerialize(t *testing.T) {
_, err := NewDeltaMPTFromBytes([]byte{})
if err == nil {
t.Error("Expected error on deserialize with invalid input, but got none")
}
eln, _ := NewEmptyLeafNode()
_, err = NewDeltaMPTFromBytes(eln.Bytes())
if err == nil {
t.Error("Expected error on deserialize with invalid input, but got none")
}
}