@@ -33,7 +33,7 @@ func makeUintIval(a, b uint) uintInterval {
3333 return uintInterval {a , b }
3434}
3535
36- // random test data
36+ // random test data, end is random to start
3737func genUintIvals (n int ) []uintInterval {
3838 is := make ([]uintInterval , n )
3939 for i := 0 ; i < n ; i ++ {
@@ -44,7 +44,7 @@ func genUintIvals(n int) []uintInterval {
4444 return is
4545}
4646
47- // random test data
47+ // random test data, end depends on start
4848func gen2UintIvals (n int ) []uintInterval {
4949 is := make ([]uintInterval , n )
5050 for i := 0 ; i < n ; i ++ {
@@ -266,14 +266,18 @@ func TestFind(t *testing.T) {
266266 tree1 := interval .NewTree (cmpUintInterval , ivals ... )
267267
268268 for _ , ival := range ivals {
269- item , ok := tree1 .Find (ival )
270- if ok != true {
271- t .Errorf ("Find(%v) = %v, want %v" , item , ok , true )
272- }
273- ll , rr , _ , _ := cmpUintInterval (item , ival )
274- if ll != 0 || rr != 0 {
275- t .Errorf ("Find(%v) = %v, want %v" , ival , item , ival )
276- }
269+ ival := ival
270+ t .Run (ival .String (), func (t * testing.T ) {
271+ t .Parallel ()
272+ item , ok := tree1 .Find (ival )
273+ if ok != true {
274+ t .Errorf ("Find(%v) = %v, want %v" , item , ok , true )
275+ }
276+ ll , rr , _ , _ := cmpUintInterval (item , ival )
277+ if ll != 0 || rr != 0 {
278+ t .Errorf ("Find(%v) = %v, want %v" , ival , item , ival )
279+ }
280+ })
277281 }
278282}
279283
@@ -293,7 +297,7 @@ func TestCoverLCP(t *testing.T) {
293297 // │ └─ 6...7
294298 // └─ 7...9
295299
296- tcs := []struct {
300+ testcases := []struct {
297301 in uintInterval
298302 want uintInterval
299303 wantOK bool
@@ -325,10 +329,12 @@ func TestCoverLCP(t *testing.T) {
325329 // bring some variance into the Treap due to the prio randomness
326330 tree1 := interval .NewTree (cmpUintInterval , ps ... )
327331
328- for _ , tt := range tcs {
332+ for _ , tc := range testcases {
333+ tc := tc // capture range variable
329334 t .Run ("" , func (t * testing.T ) {
330- if got , ok := tree1 .CoverLCP (tt .in ); got != tt .want || ok != tt .wantOK {
331- t .Errorf ("CoverLCP(%v) = (%v, %v) want (%v, %v)" , tt .in , got , ok , tt .want , tt .wantOK )
335+ t .Parallel ()
336+ if got , ok := tree1 .CoverLCP (tc .in ); got != tc .want || ok != tc .wantOK {
337+ t .Errorf ("CoverLCP(%v) = (%v, %v) want (%v, %v)" , tc .in , got , ok , tc .want , tc .wantOK )
332338 }
333339 })
334340 }
@@ -351,7 +357,7 @@ func TestCoverSCP(t *testing.T) {
351357 // │ └─ 6...7
352358 // └─ 7...9
353359
354- tcs := []struct {
360+ testcases := []struct {
355361 in uintInterval
356362 want uintInterval
357363 wantOK bool
@@ -418,10 +424,12 @@ func TestCoverSCP(t *testing.T) {
418424 // bring some variance into the Treap due to the prio randomness
419425 tree1 := interval .NewTree (cmpUintInterval , ps ... )
420426
421- for _ , tt := range tcs {
427+ for _ , tc := range testcases {
428+ tc := tc
422429 t .Run ("" , func (t * testing.T ) {
423- if got , ok := tree1 .CoverSCP (tt .in ); got != tt .want || ok != tt .wantOK {
424- t .Errorf ("CoverSCP(%v) = (%v, %v) want (%v, %v)" , tt .in , got , ok , tt .want , tt .wantOK )
430+ t .Parallel ()
431+ if got , ok := tree1 .CoverSCP (tc .in ); got != tc .want || ok != tc .wantOK {
432+ t .Errorf ("CoverSCP(%v) = (%v, %v) want (%v, %v)" , tc .in , got , ok , tc .want , tc .wantOK )
425433 }
426434 })
427435 }
@@ -538,7 +546,7 @@ func TestIntersects(t *testing.T) {
538546 // │ └─ 6...7
539547 // └─ 7...9
540548
541- tcs := []struct {
549+ testcases := []struct {
542550 in uintInterval
543551 want bool
544552 }{
@@ -563,61 +571,17 @@ func TestIntersects(t *testing.T) {
563571 want : false ,
564572 },
565573 }
566- for _ , tt := range tcs {
574+ for _ , tc := range testcases {
575+ tc := tc
567576 t .Run ("" , func (t * testing.T ) {
568- if ok := tree1 .Intersects (tt .in ); ok != tt .want {
569- t .Errorf ("Intersects(%v) = %v, want: %v" , tt .in , ok , tt .want )
577+ t .Parallel ()
578+ if ok := tree1 .Intersects (tc .in ); ok != tc .want {
579+ t .Errorf ("Intersects(%v) = %v, want: %v" , tc .in , ok , tc .want )
570580 }
571581 })
572582 }
573583}
574584
575- func FuzzLCPandSCP (f * testing.F ) {
576- ivals := genUintIvals (100_000 )
577- tree := interval .NewTree (cmpUintInterval , ivals ... )
578-
579- for i := 0 ; i < 100 ; i ++ {
580- probe := genUintIvals (1 )[0 ]
581- a := probe [0 ]
582- b := probe [1 ]
583- f .Add (a , b )
584- }
585-
586- f .Fuzz (func (t * testing.T , a , b uint ) {
587- probe := makeUintIval (a , b )
588-
589- _ , okLCP := tree .CoverLCP (probe )
590- _ , okSCP := tree .CoverSCP (probe )
591-
592- if okLCP != okSCP {
593- // okLCP and okSCP must be both true or both false
594- t .Fatalf ("CoverLCP(%v) and CoverSCP(%v) mismatch" , probe , probe )
595- }
596- })
597- }
598-
599- func FuzzIntersects (f * testing.F ) {
600- ivals := genUintIvals (10_000 )
601- tree := interval .NewTree (cmpUintInterval , ivals ... )
602-
603- for i := 0 ; i < 10 ; i ++ {
604- a := ivals [i ][0 ]
605- b := ivals [i ][1 ]
606- f .Add (a , b )
607- }
608-
609- f .Fuzz (func (t * testing.T , a , b uint ) {
610- probe := makeUintIval (a , b )
611-
612- gotBool := tree .Intersects (probe )
613- gotSlice := tree .Intersections (probe )
614-
615- if gotBool && gotSlice == nil || ! gotBool && gotSlice != nil {
616- t .Fatalf ("Intersects(%v) and Intersections(%v) mismatch" , probe , probe )
617- }
618- })
619- }
620-
621585func TestIntersections (t * testing.T ) {
622586 t .Parallel ()
623587
@@ -888,8 +852,10 @@ func TestStatistics(t *testing.T) {
888852 t .Parallel ()
889853
890854 for n := 10_000 ; n <= 1_000_000 ; n *= 10 {
855+ n := n
891856 count := strconv .Itoa (n )
892857 t .Run (count , func (t * testing.T ) {
858+ t .Parallel ()
893859 tree1 := interval .NewTree (cmpUintInterval , genUintIvals (n )... )
894860
895861 size , _ , averageDepth , deviation := tree1 .Statistics ()
@@ -928,13 +894,14 @@ func TestPrintBST(t *testing.T) {
928894
929895func TestMatch (t * testing.T ) {
930896 t .Parallel ()
931- tree1 := interval .NewTree (cmpUintInterval , genUintIvals (100_000 )... )
897+ tree1 := interval .NewTree (cmpUintInterval , genUintIvals (10_000 )... )
932898
933899 n := 100
934900 for i := 0 ; i < n ; i ++ {
935- probe := genUintIvals (100_000 )[0 ]
901+ probe := genUintIvals (10_000 )[0 ]
936902
937903 t .Run (probe .String (), func (t * testing.T ) {
904+ t .Parallel ()
938905 tree1 := tree1 .Insert (probe )
939906
940907 if _ , ok := tree1 .Find (probe ); ! ok {
@@ -979,13 +946,14 @@ func TestMatch(t *testing.T) {
979946
980947func TestMissing (t * testing.T ) {
981948 t .Parallel ()
982- tree1 := interval .NewTree (cmpUintInterval , genUintIvals (100_000 )... )
949+ tree1 := interval .NewTree (cmpUintInterval , genUintIvals (10_000 )... )
983950
984951 n := 100
985952 for i := 0 ; i < n ; i ++ {
986- probe := genUintIvals (100_000 )[0 ]
953+ probe := genUintIvals (1 )[0 ]
987954
988955 t .Run (probe .String (), func (t * testing.T ) {
956+ t .Parallel ()
989957 tree1 := tree1 .Insert (probe )
990958 var ok bool
991959
0 commit comments