@@ -21,7 +21,7 @@ import (
2121 crand "crypto/rand"
2222 "encoding/binary"
2323 mrand "math/rand"
24- "sort "
24+ "slices "
2525 "testing"
2626
2727 "github.com/XinFinOrg/XDPoSChain/common"
@@ -146,21 +146,15 @@ func TestMissingKeyProof(t *testing.T) {
146146 }
147147}
148148
149- type entrySlice []* kv
150-
151- func (p entrySlice ) Len () int { return len (p ) }
152- func (p entrySlice ) Less (i , j int ) bool { return bytes .Compare (p [i ].k , p [j ].k ) < 0 }
153- func (p entrySlice ) Swap (i , j int ) { p [i ], p [j ] = p [j ], p [i ] }
154-
155149// TestRangeProof tests normal range proof with both edge proofs
156150// as the existent proof. The test cases are generated randomly.
157151func TestRangeProof (t * testing.T ) {
158152 trie , vals := randomTrie (4096 )
159- var entries entrySlice
153+ var entries [] * kv
160154 for _ , kv := range vals {
161155 entries = append (entries , kv )
162156 }
163- sort . Sort (entries )
157+ slices . SortFunc (entries , ( * kv ). cmp )
164158 for i := 0 ; i < 500 ; i ++ {
165159 start := mrand .Intn (len (entries ))
166160 end := mrand .Intn (len (entries )- start ) + start + 1
@@ -189,11 +183,11 @@ func TestRangeProof(t *testing.T) {
189183// The test cases are generated randomly.
190184func TestRangeProofWithNonExistentProof (t * testing.T ) {
191185 trie , vals := randomTrie (4096 )
192- var entries entrySlice
186+ var entries [] * kv
193187 for _ , kv := range vals {
194188 entries = append (entries , kv )
195189 }
196- sort . Sort (entries )
190+ slices . SortFunc (entries , ( * kv ). cmp )
197191 for i := 0 ; i < 500 ; i ++ {
198192 start := mrand .Intn (len (entries ))
199193 end := mrand .Intn (len (entries )- start ) + start + 1
@@ -261,11 +255,11 @@ func TestRangeProofWithNonExistentProof(t *testing.T) {
261255// - There exists a gap between the last element and the right edge proof
262256func TestRangeProofWithInvalidNonExistentProof (t * testing.T ) {
263257 trie , vals := randomTrie (4096 )
264- var entries entrySlice
258+ var entries [] * kv
265259 for _ , kv := range vals {
266260 entries = append (entries , kv )
267261 }
268- sort . Sort (entries )
262+ slices . SortFunc (entries , ( * kv ). cmp )
269263
270264 // Case 1
271265 start , end := 100 , 200
@@ -318,11 +312,11 @@ func TestRangeProofWithInvalidNonExistentProof(t *testing.T) {
318312// non-existent one.
319313func TestOneElementRangeProof (t * testing.T ) {
320314 trie , vals := randomTrie (4096 )
321- var entries entrySlice
315+ var entries [] * kv
322316 for _ , kv := range vals {
323317 entries = append (entries , kv )
324318 }
325- sort . Sort (entries )
319+ slices . SortFunc (entries , ( * kv ). cmp )
326320
327321 // One element with existent edge proof, both edge proofs
328322 // point to the SAME key.
@@ -405,11 +399,11 @@ func TestOneElementRangeProof(t *testing.T) {
405399// The edge proofs can be nil.
406400func TestAllElementsProof (t * testing.T ) {
407401 trie , vals := randomTrie (4096 )
408- var entries entrySlice
402+ var entries [] * kv
409403 for _ , kv := range vals {
410404 entries = append (entries , kv )
411405 }
412- sort . Sort (entries )
406+ slices . SortFunc (entries , ( * kv ). cmp )
413407
414408 var k [][]byte
415409 var v [][]byte
@@ -455,13 +449,13 @@ func TestAllElementsProof(t *testing.T) {
455449func TestSingleSideRangeProof (t * testing.T ) {
456450 for i := 0 ; i < 64 ; i ++ {
457451 trie := NewEmpty (NewDatabase (rawdb .NewMemoryDatabase ()))
458- var entries entrySlice
452+ var entries [] * kv
459453 for i := 0 ; i < 4096 ; i ++ {
460454 value := & kv {randBytes (32 ), randBytes (20 ), false }
461455 trie .Update (value .k , value .v )
462456 entries = append (entries , value )
463457 }
464- sort . Sort (entries )
458+ slices . SortFunc (entries , ( * kv ). cmp )
465459
466460 var cases = []int {0 , 1 , 50 , 100 , 1000 , 2000 , len (entries ) - 1 }
467461 for _ , pos := range cases {
@@ -490,13 +484,13 @@ func TestSingleSideRangeProof(t *testing.T) {
490484func TestReverseSingleSideRangeProof (t * testing.T ) {
491485 for i := 0 ; i < 64 ; i ++ {
492486 trie := NewEmpty (NewDatabase (rawdb .NewMemoryDatabase ()))
493- var entries entrySlice
487+ var entries [] * kv
494488 for i := 0 ; i < 4096 ; i ++ {
495489 value := & kv {randBytes (32 ), randBytes (20 ), false }
496490 trie .Update (value .k , value .v )
497491 entries = append (entries , value )
498492 }
499- sort . Sort (entries )
493+ slices . SortFunc (entries , ( * kv ). cmp )
500494
501495 var cases = []int {0 , 1 , 50 , 100 , 1000 , 2000 , len (entries ) - 1 }
502496 for _ , pos := range cases {
@@ -526,11 +520,11 @@ func TestReverseSingleSideRangeProof(t *testing.T) {
526520// The prover is expected to detect the error.
527521func TestBadRangeProof (t * testing.T ) {
528522 trie , vals := randomTrie (4096 )
529- var entries entrySlice
523+ var entries [] * kv
530524 for _ , kv := range vals {
531525 entries = append (entries , kv )
532526 }
533- sort . Sort (entries )
527+ slices . SortFunc (entries , ( * kv ). cmp )
534528
535529 for i := 0 ; i < 500 ; i ++ {
536530 start := mrand .Intn (len (entries ))
@@ -629,11 +623,11 @@ func TestGappedRangeProof(t *testing.T) {
629623// TestSameSideProofs tests the element is not in the range covered by proofs
630624func TestSameSideProofs (t * testing.T ) {
631625 trie , vals := randomTrie (4096 )
632- var entries entrySlice
626+ var entries [] * kv
633627 for _ , kv := range vals {
634628 entries = append (entries , kv )
635629 }
636- sort . Sort (entries )
630+ slices . SortFunc (entries , ( * kv ). cmp )
637631
638632 pos := 1000
639633 first := decreaseKey (common .CopyBytes (entries [pos ].k ))
@@ -671,13 +665,13 @@ func TestSameSideProofs(t *testing.T) {
671665
672666func TestHasRightElement (t * testing.T ) {
673667 trie := NewEmpty (NewDatabase (rawdb .NewMemoryDatabase ()))
674- var entries entrySlice
668+ var entries [] * kv
675669 for i := 0 ; i < 4096 ; i ++ {
676670 value := & kv {randBytes (32 ), randBytes (20 ), false }
677671 trie .Update (value .k , value .v )
678672 entries = append (entries , value )
679673 }
680- sort . Sort (entries )
674+ slices . SortFunc (entries , ( * kv ). cmp )
681675
682676 var cases = []struct {
683677 start int
@@ -745,11 +739,11 @@ func TestHasRightElement(t *testing.T) {
745739// The first edge proof must be a non-existent proof.
746740func TestEmptyRangeProof (t * testing.T ) {
747741 trie , vals := randomTrie (4096 )
748- var entries entrySlice
742+ var entries [] * kv
749743 for _ , kv := range vals {
750744 entries = append (entries , kv )
751745 }
752- sort . Sort (entries )
746+ slices . SortFunc (entries , ( * kv ). cmp )
753747
754748 var cases = []struct {
755749 pos int
@@ -780,11 +774,11 @@ func TestEmptyRangeProof(t *testing.T) {
780774func TestBloatedProof (t * testing.T ) {
781775 // Use a small trie
782776 trie , kvs := nonRandomTrie (100 )
783- var entries entrySlice
777+ var entries [] * kv
784778 for _ , kv := range kvs {
785779 entries = append (entries , kv )
786780 }
787- sort . Sort (entries )
781+ slices . SortFunc (entries , ( * kv ). cmp )
788782 var keys [][]byte
789783 var vals [][]byte
790784
@@ -814,11 +808,11 @@ func TestBloatedProof(t *testing.T) {
814808// noop technically, but practically should be rejected.
815809func TestEmptyValueRangeProof (t * testing.T ) {
816810 trie , values := randomTrie (512 )
817- var entries entrySlice
811+ var entries [] * kv
818812 for _ , kv := range values {
819813 entries = append (entries , kv )
820814 }
821- sort . Sort (entries )
815+ slices . SortFunc (entries , ( * kv ). cmp )
822816
823817 // Create a new entry with a slightly modified key
824818 mid := len (entries ) / 2
@@ -858,11 +852,11 @@ func TestEmptyValueRangeProof(t *testing.T) {
858852// practically should be rejected.
859853func TestAllElementsEmptyValueRangeProof (t * testing.T ) {
860854 trie , values := randomTrie (512 )
861- var entries entrySlice
855+ var entries [] * kv
862856 for _ , kv := range values {
863857 entries = append (entries , kv )
864858 }
865- sort . Sort (entries )
859+ slices . SortFunc (entries , ( * kv ). cmp )
866860
867861 // Create a new entry with a slightly modified key
868862 mid := len (entries ) / 2
@@ -964,11 +958,11 @@ func BenchmarkVerifyRangeProof5000(b *testing.B) { benchmarkVerifyRangeProof(b,
964958
965959func benchmarkVerifyRangeProof (b * testing.B , size int ) {
966960 trie , vals := randomTrie (8192 )
967- var entries entrySlice
961+ var entries [] * kv
968962 for _ , kv := range vals {
969963 entries = append (entries , kv )
970964 }
971- sort . Sort (entries )
965+ slices . SortFunc (entries , ( * kv ). cmp )
972966
973967 start := 2
974968 end := start + size
@@ -1001,11 +995,11 @@ func BenchmarkVerifyRangeNoProof1000(b *testing.B) { benchmarkVerifyRangeNoProof
1001995
1002996func benchmarkVerifyRangeNoProof (b * testing.B , size int ) {
1003997 trie , vals := randomTrie (size )
1004- var entries entrySlice
998+ var entries [] * kv
1005999 for _ , kv := range vals {
10061000 entries = append (entries , kv )
10071001 }
1008- sort . Sort (entries )
1002+ slices . SortFunc (entries , ( * kv ). cmp )
10091003
10101004 var keys [][]byte
10111005 var values [][]byte
0 commit comments