@@ -63,7 +63,7 @@ func TestNewTree(t *testing.T) {
6363 r .Equal (expectedRoot , root )
6464}
6565
66- func concatLeaves (lChild , rChild []byte ) []byte {
66+ func concatLeaves (_ , lChild , rChild []byte ) []byte {
6767 if len (lChild ) == NodeSize {
6868 lChild = lChild [:1 ]
6969 }
@@ -192,8 +192,7 @@ func TestNewTreeUnbalancedProof(t *testing.T) {
192192 expectedProof [3 ], _ = NewNodeFromHex ("0600000000000000000000000000000000000000000000000000000000000000" )
193193 expectedProof [4 ], _ = NewNodeFromHex ("bc68417a8495de6e22d95b980fca5a1183f29eff0e2a9b7ddde91ed5bcbea952" )
194194
195- var proof nodes
196- proof = tree .Proof ()
195+ proof := tree .Proof ()
197196 r .EqualValues (expectedProof , proof )
198197}
199198
@@ -314,6 +313,38 @@ func TestNewProvingTreeMultiProof(t *testing.T) {
314313 ***************************************************/
315314}
316315
316+ // TestNewProvingTreeMultiProofReuseLeafBytes verifies if the user of Tree
317+ // can safely reuse the memory passed into Tree::AddLeaf.
318+ func TestNewProvingTreeMultiProofReuseLeafBytes (t * testing.T ) {
319+ r := require .New (t )
320+ tree , err := NewProvingTree (setOf (1 , 4 ))
321+ r .NoError (err )
322+ var leaf [32 ]byte
323+ for i := uint64 (0 ); i < 8 ; i ++ {
324+ binary .LittleEndian .PutUint64 (leaf [:], i )
325+ r .NoError (tree .AddLeaf (leaf [:]))
326+ }
327+ expectedRoot , _ := NewNodeFromHex ("89a0f1577268cc19b0a39c7a69f804fd140640c699585eb635ebb03c06154cce" )
328+ root := tree .Root ()
329+ r .Equal (expectedRoot , root )
330+
331+ expectedProof := make ([][]byte , 4 )
332+ expectedProof [0 ], _ = NewNodeFromHex ("0000000000000000000000000000000000000000000000000000000000000000" )
333+ expectedProof [1 ], _ = NewNodeFromHex ("0094579cfc7b716038d416a311465309bea202baa922b224a7b08f01599642fb" )
334+ expectedProof [2 ], _ = NewNodeFromHex ("0500000000000000000000000000000000000000000000000000000000000000" )
335+ expectedProof [3 ], _ = NewNodeFromHex ("fa670379e5c2212ed93ff09769622f81f98a91e1ec8fb114d607dd25220b9088" )
336+
337+ proof := tree .Proof ()
338+ r .EqualValues (expectedProof , proof )
339+
340+ /***************************************************
341+ | 89a0 |
342+ | ba94 633b |
343+ | cb59 .0094. bd50 .fa67. |
344+ | .0000.=0100= 0200 0300 =0400=.0500. 0600 0700 |
345+ ***************************************************/
346+ }
347+
317348func TestNewProvingTreeMultiProof2 (t * testing.T ) {
318349 r := require .New (t )
319350 tree , err := NewProvingTree (setOf (0 , 1 , 4 ))
@@ -442,7 +473,7 @@ func TestTree_GetParkedNodes(t *testing.T) {
442473
443474 r .NoError (tree .AddLeaf ([]byte {1 }))
444475 r .EqualValues (
445- [][]byte {nil , decode (r , "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2" )},
476+ [][]byte {{} , decode (r , "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2" )},
446477 tree .GetParkedNodes (nil ))
447478
448479 r .NoError (tree .AddLeaf ([]byte {2 }))
@@ -452,7 +483,7 @@ func TestTree_GetParkedNodes(t *testing.T) {
452483
453484 r .NoError (tree .AddLeaf ([]byte {3 }))
454485 r .EqualValues (
455- [][]byte {nil , nil , decode (r , "7699a4fdd6b8b6908a344f73b8f05c8e1400f7253f544602c442ff5c65504b24" )},
486+ [][]byte {{}, {} , decode (r , "7699a4fdd6b8b6908a344f73b8f05c8e1400f7253f544602c442ff5c65504b24" )},
456487 tree .GetParkedNodes (nil ))
457488}
458489
@@ -463,7 +494,7 @@ func TestTree_SetParkedNodes(t *testing.T) {
463494 r .NoError (err )
464495 r .NoError (tree .SetParkedNodes ([][]byte {{0 }}))
465496 r .NoError (tree .AddLeaf ([]byte {1 }))
466- parkedNodes := [][]byte {nil , decode (r , "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2" )}
497+ parkedNodes := [][]byte {{} , decode (r , "b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2" )}
467498 r .EqualValues (parkedNodes , tree .GetParkedNodes (nil ))
468499
469500 tree , err = NewTreeBuilder ().Build ()
@@ -477,7 +508,7 @@ func TestTree_SetParkedNodes(t *testing.T) {
477508 r .NoError (err )
478509 r .NoError (tree .SetParkedNodes (parkedNodes ))
479510 r .NoError (tree .AddLeaf ([]byte {3 }))
480- parkedNodes = [][]byte {nil , nil , decode (r , "7699a4fdd6b8b6908a344f73b8f05c8e1400f7253f544602c442ff5c65504b24" )}
511+ parkedNodes = [][]byte {{}, {} , decode (r , "7699a4fdd6b8b6908a344f73b8f05c8e1400f7253f544602c442ff5c65504b24" )}
481512 r .EqualValues (parkedNodes , tree .GetParkedNodes (nil ))
482513}
483514
0 commit comments