@@ -123,6 +123,68 @@ func TestQueryResultHelper_Hash_ThreeLevel(t *testing.T) {
123
123
MaxLevelHashes : hashesToBytes ([]Hash {level3_1 , level3_2 })})
124
124
}
125
125
126
+ func TestQueryResultHelper_Hash_MaxLevelIncrementNeededInDone (t * testing.T ) {
127
+ maxDegree := 2
128
+ kvReads := buildTestKVReads (t , 24 )
129
+ r , h := buildTestResults (t , true , maxDegree , kvReads )
130
+ level1_1 := computeTestHashKVReads (t , kvReads [0 :3 ])
131
+ level1_2 := computeTestHashKVReads (t , kvReads [3 :6 ])
132
+ level1_3 := computeTestHashKVReads (t , kvReads [6 :9 ])
133
+ level1_4 := computeTestHashKVReads (t , kvReads [9 :12 ])
134
+ level1_5 := computeTestHashKVReads (t , kvReads [12 :15 ])
135
+ level1_6 := computeTestHashKVReads (t , kvReads [15 :18 ])
136
+ level1_7 := computeTestHashKVReads (t , kvReads [18 :21 ])
137
+ level1_8 := computeTestHashKVReads (t , kvReads [21 :24 ])
138
+
139
+ level2_1 := computeTestCombinedHash (t , level1_1 , level1_2 , level1_3 )
140
+ level2_2 := computeTestCombinedHash (t , level1_4 , level1_5 , level1_6 )
141
+ level2_3 := computeTestCombinedHash (t , level1_7 , level1_8 )
142
+
143
+ level3_1 := computeTestCombinedHash (t , level2_1 , level2_2 , level2_3 )
144
+
145
+ testutil .AssertNil (t , r )
146
+ testutil .AssertEquals (t , h , & kvrwset.QueryReadsMerkleSummary {
147
+ MaxDegree : uint32 (maxDegree ),
148
+ MaxLevel : 3 ,
149
+ MaxLevelHashes : hashesToBytes ([]Hash {level3_1 })})
150
+ }
151
+
152
+ func TestQueryResultHelper_Hash_FirstLevelSkipNeededInDone (t * testing.T ) {
153
+ maxDegree := 2
154
+ kvReads := buildTestKVReads (t , 45 )
155
+ r , h := buildTestResults (t , true , maxDegree , kvReads )
156
+ level1_1 := computeTestHashKVReads (t , kvReads [0 :3 ])
157
+ level1_2 := computeTestHashKVReads (t , kvReads [3 :6 ])
158
+ level1_3 := computeTestHashKVReads (t , kvReads [6 :9 ])
159
+ level1_4 := computeTestHashKVReads (t , kvReads [9 :12 ])
160
+ level1_5 := computeTestHashKVReads (t , kvReads [12 :15 ])
161
+ level1_6 := computeTestHashKVReads (t , kvReads [15 :18 ])
162
+ level1_7 := computeTestHashKVReads (t , kvReads [18 :21 ])
163
+ level1_8 := computeTestHashKVReads (t , kvReads [21 :24 ])
164
+ level1_9 := computeTestHashKVReads (t , kvReads [24 :27 ])
165
+ level1_10 := computeTestHashKVReads (t , kvReads [27 :30 ])
166
+ level1_11 := computeTestHashKVReads (t , kvReads [30 :33 ])
167
+ level1_12 := computeTestHashKVReads (t , kvReads [33 :36 ])
168
+ level1_13 := computeTestHashKVReads (t , kvReads [36 :39 ])
169
+ level1_14 := computeTestHashKVReads (t , kvReads [39 :42 ])
170
+ level1_15 := computeTestHashKVReads (t , kvReads [42 :45 ])
171
+
172
+ level2_1 := computeTestCombinedHash (t , level1_1 , level1_2 , level1_3 )
173
+ level2_2 := computeTestCombinedHash (t , level1_4 , level1_5 , level1_6 )
174
+ level2_3 := computeTestCombinedHash (t , level1_7 , level1_8 , level1_9 )
175
+ level2_4 := computeTestCombinedHash (t , level1_10 , level1_11 , level1_12 )
176
+ level2_5 := computeTestCombinedHash (t , level1_13 , level1_14 , level1_15 )
177
+
178
+ level3_1 := computeTestCombinedHash (t , level2_1 , level2_2 , level2_3 )
179
+ level3_2 := computeTestCombinedHash (t , level2_4 , level2_5 )
180
+
181
+ testutil .AssertNil (t , r )
182
+ testutil .AssertEquals (t , h , & kvrwset.QueryReadsMerkleSummary {
183
+ MaxDegree : uint32 (maxDegree ),
184
+ MaxLevel : 3 ,
185
+ MaxLevelHashes : hashesToBytes ([]Hash {level3_1 , level3_2 })})
186
+ }
187
+
126
188
func buildTestResults (t * testing.T , enableHashing bool , maxDegree int , kvReads []* kvrwset.KVRead ) ([]* kvrwset.KVRead , * kvrwset.QueryReadsMerkleSummary ) {
127
189
helper , _ := NewRangeQueryResultsHelper (enableHashing , uint32 (maxDegree ))
128
190
for _ , kvRead := range kvReads {
0 commit comments