@@ -304,6 +304,34 @@ func TestRefSubtreeConsistencyProof(t *testing.T) {
304304 hd ("ca854ea128ed050b41b35ffc1b87b8eb2bde461e9e3b5596ece6b9d5975a0ae0" ),
305305 hd ("d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7" ),
306306 }},
307+ // Non-zero starting subtrees:
308+ // Right half [4, 8) in size 8 requires the root of the left half [0, 4).
309+ {start : 4 , end : 8 , size : 8 , known : true , want : [][]byte {
310+ hd ("d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7" ),
311+ }},
312+ // Subtree of size 1 not starting at 0 ([4, 5) in size 8):
313+ {start : 4 , end : 5 , size : 8 , known : true , want : [][]byte {
314+ hd ("4271a26be0d8a84f0bd54c8c302e7cb3a3b5d1fa6780a40bcce2873477dab658" ),
315+ hd ("ca854ea128ed050b41b35ffc1b87b8eb2bde461e9e3b5596ece6b9d5975a0ae0" ),
316+ hd ("d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7" ),
317+ }},
318+ // Subtree ending at size not starting at 0 ([6, 8) in size 8):
319+ {start : 6 , end : 8 , size : 8 , known : true , want : [][]byte {
320+ hd ("0ebc5d3437fbe2db158b9f126a1d118e308181031d0a949f8dededebc558ef6a" ),
321+ hd ("d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7" ),
322+ }},
323+ // Perfect subtree not starting at 0, not ending at size ([2, 4) in size 8):
324+ {start : 2 , end : 4 , size : 8 , known : true , want : [][]byte {
325+ hd ("fac54203e7cc696cf0dfcb42c92a1d9dbaf70ad9e621f4bd8d98662f00e3c125" ),
326+ hd ("6b47aaf29ee3c2af9af889bc1fb9254dabd31177f16232dd6aab035ca39bf6e4" ),
327+ }},
328+ // Imperfect subtree not starting at 0, not ending at size ([4, 7) in size 8):
329+ {start : 4 , end : 7 , size : 8 , known : true , want : [][]byte {
330+ hd ("b08693ec2e721597130641e8211e7eedccb4c26413963eee6c1e2ed16ffb1a5f" ),
331+ hd ("46f6ffadd3d06a09ff3c5860d2755c8b9819db7df44251788c7d8e3180de8eb1" ),
332+ hd ("0ebc5d3437fbe2db158b9f126a1d118e308181031d0a949f8dededebc558ef6a" ),
333+ hd ("d37ee418976dd95753c1c73862b9398fa2a2cf9b4ff0fdfe8b30cd95209614b7" ),
334+ }},
307335 } {
308336 t .Run (fmt .Sprintf ("start:%d end:%d size:%d known:%t" , tc .start , tc .end , tc .size , tc .known ), func (t * testing.T ) {
309337 got := refSubtreeConsistencyProof (tc .start , tc .end , entries [:tc .size ], tc .known , hasher )
0 commit comments