소스 검색

trie: fix TestBadRangeProof unit test (#21034)

gary rong 5 년 전
부모
커밋
5cdc2dffda
1개의 변경된 파일14개의 추가작업 그리고 3개의 파일을 삭제
  1. 14 3
      trie/proof_test.go

+ 14 - 3
trie/proof_test.go

@@ -177,12 +177,23 @@ func TestBadRangeProof(t *testing.T) {
 			vals[index] = randBytes(20) // In theory it can't be same
 		case 2:
 			// Gapped entry slice
+
+			// There are only two elements, skip it. Dropped any element
+			// will lead to single edge proof which is always correct.
+			if end-start <= 2 {
+				continue
+			}
+			// If the dropped element is the first or last one and it's a
+			// batch of small size elements. In this special case, it can
+			// happen that the proof for the edge element is exactly same
+			// with the first/last second element(since small values are
+			// embedded in the parent). Avoid this case.
 			index = mrand.Intn(end - start)
-			keys = append(keys[:index], keys[index+1:]...)
-			vals = append(vals[:index], vals[index+1:]...)
-			if len(keys) <= 1 {
+			if (index == end-start-1 || index == 0) && end <= 100 {
 				continue
 			}
+			keys = append(keys[:index], keys[index+1:]...)
+			vals = append(vals[:index], vals[index+1:]...)
 		case 3:
 			// Switched entry slice, same effect with gapped
 			index = mrand.Intn(end - start)