@@ -22,7 +22,7 @@ import (
2222 "encoding/binary"
2323 "fmt"
2424 mrand "math/rand"
25- "sort "
25+ "slices "
2626 "testing"
2727
2828 "github.com/XinFinOrg/XDPoSChain/common"
@@ -165,21 +165,15 @@ func TestMissingKeyProof(t *testing.T) {
165165 }
166166}
167167
168- type entrySlice []* kv
169-
170- func (p entrySlice ) Len () int { return len (p ) }
171- func (p entrySlice ) Less (i , j int ) bool { return bytes .Compare (p [i ].k , p [j ].k ) < 0 }
172- func (p entrySlice ) Swap (i , j int ) { p [i ], p [j ] = p [j ], p [i ] }
173-
174168// TestRangeProof tests normal range proof with both edge proofs
175169// as the existent proof. The test cases are generated randomly.
176170func TestRangeProof (t * testing.T ) {
177171 trie , vals := randomTrie (4096 )
178- var entries entrySlice
172+ var entries [] * kv
179173 for _ , kv := range vals {
180174 entries = append (entries , kv )
181175 }
182- sort . Sort (entries )
176+ slices . SortFunc (entries , ( * kv ). cmp )
183177 for i := 0 ; i < 500 ; i ++ {
184178 start := mrand .Intn (len (entries ))
185179 end := mrand .Intn (len (entries )- start ) + start + 1
@@ -208,11 +202,11 @@ func TestRangeProof(t *testing.T) {
208202// The test cases are generated randomly.
209203func TestRangeProofWithNonExistentProof (t * testing.T ) {
210204 trie , vals := randomTrie (4096 )
211- var entries entrySlice
205+ var entries [] * kv
212206 for _ , kv := range vals {
213207 entries = append (entries , kv )
214208 }
215- sort . Sort (entries )
209+ slices . SortFunc (entries , ( * kv ). cmp )
216210 for i := 0 ; i < 500 ; i ++ {
217211 start := mrand .Intn (len (entries ))
218212 end := mrand .Intn (len (entries )- start ) + start + 1
@@ -280,11 +274,11 @@ func TestRangeProofWithNonExistentProof(t *testing.T) {
280274// - There exists a gap between the last element and the right edge proof
281275func TestRangeProofWithInvalidNonExistentProof (t * testing.T ) {
282276 trie , vals := randomTrie (4096 )
283- var entries entrySlice
277+ var entries [] * kv
284278 for _ , kv := range vals {
285279 entries = append (entries , kv )
286280 }
287- sort . Sort (entries )
281+ slices . SortFunc (entries , ( * kv ). cmp )
288282
289283 // Case 1
290284 start , end := 100 , 200
@@ -337,11 +331,11 @@ func TestRangeProofWithInvalidNonExistentProof(t *testing.T) {
337331// non-existent one.
338332func TestOneElementRangeProof (t * testing.T ) {
339333 trie , vals := randomTrie (4096 )
340- var entries entrySlice
334+ var entries [] * kv
341335 for _ , kv := range vals {
342336 entries = append (entries , kv )
343337 }
344- sort . Sort (entries )
338+ slices . SortFunc (entries , ( * kv ). cmp )
345339
346340 // One element with existent edge proof, both edge proofs
347341 // point to the SAME key.
@@ -424,11 +418,11 @@ func TestOneElementRangeProof(t *testing.T) {
424418// The edge proofs can be nil.
425419func TestAllElementsProof (t * testing.T ) {
426420 trie , vals := randomTrie (4096 )
427- var entries entrySlice
421+ var entries [] * kv
428422 for _ , kv := range vals {
429423 entries = append (entries , kv )
430424 }
431- sort . Sort (entries )
425+ slices . SortFunc (entries , ( * kv ). cmp )
432426
433427 var k [][]byte
434428 var v [][]byte
@@ -474,13 +468,13 @@ func TestAllElementsProof(t *testing.T) {
474468func TestSingleSideRangeProof (t * testing.T ) {
475469 for i := 0 ; i < 64 ; i ++ {
476470 trie := NewEmpty (NewDatabase (rawdb .NewMemoryDatabase ()))
477- var entries entrySlice
471+ var entries [] * kv
478472 for i := 0 ; i < 4096 ; i ++ {
479473 value := & kv {randBytes (32 ), randBytes (20 ), false }
480474 trie .MustUpdate (value .k , value .v )
481475 entries = append (entries , value )
482476 }
483- sort . Sort (entries )
477+ slices . SortFunc (entries , ( * kv ). cmp )
484478
485479 var cases = []int {0 , 1 , 50 , 100 , 1000 , 2000 , len (entries ) - 1 }
486480 for _ , pos := range cases {
@@ -509,13 +503,13 @@ func TestSingleSideRangeProof(t *testing.T) {
509503func TestReverseSingleSideRangeProof (t * testing.T ) {
510504 for i := 0 ; i < 64 ; i ++ {
511505 trie := NewEmpty (NewDatabase (rawdb .NewMemoryDatabase ()))
512- var entries entrySlice
506+ var entries [] * kv
513507 for i := 0 ; i < 4096 ; i ++ {
514508 value := & kv {randBytes (32 ), randBytes (20 ), false }
515509 trie .MustUpdate (value .k , value .v )
516510 entries = append (entries , value )
517511 }
518- sort . Sort (entries )
512+ slices . SortFunc (entries , ( * kv ). cmp )
519513
520514 var cases = []int {0 , 1 , 50 , 100 , 1000 , 2000 , len (entries ) - 1 }
521515 for _ , pos := range cases {
@@ -545,11 +539,11 @@ func TestReverseSingleSideRangeProof(t *testing.T) {
545539// The prover is expected to detect the error.
546540func TestBadRangeProof (t * testing.T ) {
547541 trie , vals := randomTrie (4096 )
548- var entries entrySlice
542+ var entries [] * kv
549543 for _ , kv := range vals {
550544 entries = append (entries , kv )
551545 }
552- sort . Sort (entries )
546+ slices . SortFunc (entries , ( * kv ). cmp )
553547
554548 for i := 0 ; i < 500 ; i ++ {
555549 start := mrand .Intn (len (entries ))
@@ -648,11 +642,11 @@ func TestGappedRangeProof(t *testing.T) {
648642// TestSameSideProofs tests the element is not in the range covered by proofs
649643func TestSameSideProofs (t * testing.T ) {
650644 trie , vals := randomTrie (4096 )
651- var entries entrySlice
645+ var entries [] * kv
652646 for _ , kv := range vals {
653647 entries = append (entries , kv )
654648 }
655- sort . Sort (entries )
649+ slices . SortFunc (entries , ( * kv ). cmp )
656650
657651 pos := 1000
658652 first := decreaseKey (common .CopyBytes (entries [pos ].k ))
@@ -690,13 +684,13 @@ func TestSameSideProofs(t *testing.T) {
690684
691685func TestHasRightElement (t * testing.T ) {
692686 trie := NewEmpty (NewDatabase (rawdb .NewMemoryDatabase ()))
693- var entries entrySlice
687+ var entries [] * kv
694688 for i := 0 ; i < 4096 ; i ++ {
695689 value := & kv {randBytes (32 ), randBytes (20 ), false }
696690 trie .MustUpdate (value .k , value .v )
697691 entries = append (entries , value )
698692 }
699- sort . Sort (entries )
693+ slices . SortFunc (entries , ( * kv ). cmp )
700694
701695 var cases = []struct {
702696 start int
@@ -764,11 +758,11 @@ func TestHasRightElement(t *testing.T) {
764758// The first edge proof must be a non-existent proof.
765759func TestEmptyRangeProof (t * testing.T ) {
766760 trie , vals := randomTrie (4096 )
767- var entries entrySlice
761+ var entries [] * kv
768762 for _ , kv := range vals {
769763 entries = append (entries , kv )
770764 }
771- sort . Sort (entries )
765+ slices . SortFunc (entries , ( * kv ). cmp )
772766
773767 var cases = []struct {
774768 pos int
@@ -799,11 +793,11 @@ func TestEmptyRangeProof(t *testing.T) {
799793func TestBloatedProof (t * testing.T ) {
800794 // Use a small trie
801795 trie , kvs := nonRandomTrie (100 )
802- var entries entrySlice
796+ var entries [] * kv
803797 for _ , kv := range kvs {
804798 entries = append (entries , kv )
805799 }
806- sort . Sort (entries )
800+ slices . SortFunc (entries , ( * kv ). cmp )
807801 var keys [][]byte
808802 var vals [][]byte
809803
@@ -833,11 +827,11 @@ func TestBloatedProof(t *testing.T) {
833827// noop technically, but practically should be rejected.
834828func TestEmptyValueRangeProof (t * testing.T ) {
835829 trie , values := randomTrie (512 )
836- var entries entrySlice
830+ var entries [] * kv
837831 for _ , kv := range values {
838832 entries = append (entries , kv )
839833 }
840- sort . Sort (entries )
834+ slices . SortFunc (entries , ( * kv ). cmp )
841835
842836 // Create a new entry with a slightly modified key
843837 mid := len (entries ) / 2
@@ -877,11 +871,11 @@ func TestEmptyValueRangeProof(t *testing.T) {
877871// practically should be rejected.
878872func TestAllElementsEmptyValueRangeProof (t * testing.T ) {
879873 trie , values := randomTrie (512 )
880- var entries entrySlice
874+ var entries [] * kv
881875 for _ , kv := range values {
882876 entries = append (entries , kv )
883877 }
884- sort . Sort (entries )
878+ slices . SortFunc (entries , ( * kv ). cmp )
885879
886880 // Create a new entry with a slightly modified key
887881 mid := len (entries ) / 2
@@ -983,11 +977,11 @@ func BenchmarkVerifyRangeProof5000(b *testing.B) { benchmarkVerifyRangeProof(b,
983977
984978func benchmarkVerifyRangeProof (b * testing.B , size int ) {
985979 trie , vals := randomTrie (8192 )
986- var entries entrySlice
980+ var entries [] * kv
987981 for _ , kv := range vals {
988982 entries = append (entries , kv )
989983 }
990- sort . Sort (entries )
984+ slices . SortFunc (entries , ( * kv ). cmp )
991985
992986 start := 2
993987 end := start + size
@@ -1020,11 +1014,11 @@ func BenchmarkVerifyRangeNoProof1000(b *testing.B) { benchmarkVerifyRangeNoProof
10201014
10211015func benchmarkVerifyRangeNoProof (b * testing.B , size int ) {
10221016 trie , vals := randomTrie (size )
1023- var entries entrySlice
1017+ var entries [] * kv
10241018 for _ , kv := range vals {
10251019 entries = append (entries , kv )
10261020 }
1027- sort . Sort (entries )
1021+ slices . SortFunc (entries , ( * kv ). cmp )
10281022
10291023 var keys [][]byte
10301024 var values [][]byte
0 commit comments