File tree Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Expand file tree Collapse file tree 2 files changed +40
-4
lines changed Original file line number Diff line number Diff line change @@ -70,11 +70,15 @@ func NewStateless() *StatelessNode {
70
70
}
71
71
72
72
func (n * StatelessNode ) Children () []VerkleNode {
73
- var children []VerkleNode
74
- for _ , child := range n .children {
75
- children = append (children , child )
73
+ var children [256 ]VerkleNode
74
+ for i := range children {
75
+ if n .children [byte (i )] != nil {
76
+ children [i ] = n .children [byte (i )]
77
+ } else {
78
+ children [i ] = Empty (struct {}{})
79
+ }
76
80
}
77
- return children
81
+ return children [:]
78
82
}
79
83
80
84
func (n * StatelessNode ) SetChild (i int , v VerkleNode ) error {
Original file line number Diff line number Diff line change @@ -33,6 +33,38 @@ import (
33
33
"testing"
34
34
)
35
35
36
+ func TestStatelessChildren (t * testing.T ) {
37
+ root := NewStateless ()
38
+ root .Insert (zeroKeyTest , fourtyKeyTest , nil )
39
+ root .Insert (oneKeyTest , fourtyKeyTest , nil )
40
+
41
+ list := root .Children ()
42
+ if len (list ) != NodeWidth {
43
+ t .Fatal ("invalid list length" )
44
+ }
45
+
46
+ var emptycount = 0
47
+ for _ , v := range list {
48
+ if _ , ok := v .(Empty ); ok {
49
+ emptycount ++
50
+ }
51
+ }
52
+ if emptycount != NodeWidth - 1 {
53
+ t .Fatal ("invalid number of children" )
54
+ }
55
+
56
+ if err := root .SetChild (72 , Empty {}); err == nil {
57
+ t .Fatal ("didn't catch a stateful node being inserted in a stateless node" )
58
+ }
59
+ if err := root .SetChild (512 , Empty {}); err == nil {
60
+ t .Fatal ("didn't catch a node being inserted at an invalid index in a stateless node" )
61
+ }
62
+
63
+ if err := root .SetChild (3 , & StatelessNode {}); err != nil {
64
+ t .Fatal ("error inserting stateless node" )
65
+ }
66
+ }
67
+
36
68
func TestStatelessDelete (t * testing.T ) {
37
69
root := NewStateless ()
38
70
root .Insert (zeroKeyTest , fourtyKeyTest , nil )
You can’t perform that action at this time.
0 commit comments