@@ -15,7 +15,7 @@ fn test_basic_large() {
15
15
#[ cfg( not( miri) ) ] // Miri is too slow
16
16
let size = 10000 ;
17
17
#[ cfg( miri) ]
18
- let size = 200 ;
18
+ let size = 144 ; // to obtain height 3 tree (having edges to both kinds of nodes)
19
19
assert_eq ! ( map. len( ) , 0 ) ;
20
20
21
21
for i in 0 ..size {
@@ -381,8 +381,8 @@ fn test_range_small() {
381
381
}
382
382
383
383
#[ test]
384
- fn test_range_depth_2 ( ) {
385
- // Assuming that node.CAPACITY is 11, having 12 pairs implies a depth 2 tree
384
+ fn test_range_height_2 ( ) {
385
+ // Assuming that node.CAPACITY is 11, having 12 pairs implies a height 2 tree
386
386
// with 2 leaves. Depending on details we don't want or need to rely upon,
387
387
// the single key at the root will be 6 or 7.
388
388
@@ -524,7 +524,7 @@ fn test_range_1000() {
524
524
#[ cfg( not( miri) ) ] // Miri is too slow
525
525
let size = 1000 ;
526
526
#[ cfg( miri) ]
527
- let size = 200 ;
527
+ let size = 144 ; // to obtain height 3 tree (having edges to both kinds of nodes)
528
528
let map: BTreeMap < _ , _ > = ( 0 ..size) . map ( |i| ( i, i) ) . collect ( ) ;
529
529
530
530
fn test ( map : & BTreeMap < u32 , u32 > , size : u32 , min : Bound < & u32 > , max : Bound < & u32 > ) {
@@ -561,14 +561,15 @@ fn test_range_borrowed_key() {
561
561
562
562
#[ test]
563
563
fn test_range ( ) {
564
- #[ cfg( not( miri) ) ] // Miri is too slow
565
564
let size = 200 ;
565
+ #[ cfg( not( miri) ) ] // Miri is too slow
566
+ let step = 1 ;
566
567
#[ cfg( miri) ]
567
- let size = 30 ;
568
+ let step = 66 ;
568
569
let map: BTreeMap < _ , _ > = ( 0 ..size) . map ( |i| ( i, i) ) . collect ( ) ;
569
570
570
- for i in 0 ..size {
571
- for j in i..size {
571
+ for i in ( 0 ..size) . step_by ( step ) {
572
+ for j in ( i..size) . step_by ( step ) {
572
573
let mut kvs = map. range ( ( Included ( & i) , Included ( & j) ) ) . map ( |( & k, & v) | ( k, v) ) ;
573
574
let mut pairs = ( i..=j) . map ( |i| ( i, i) ) ;
574
575
@@ -583,14 +584,15 @@ fn test_range() {
583
584
584
585
#[ test]
585
586
fn test_range_mut ( ) {
586
- #[ cfg( not( miri) ) ] // Miri is too slow
587
587
let size = 200 ;
588
+ #[ cfg( not( miri) ) ] // Miri is too slow
589
+ let step = 1 ;
588
590
#[ cfg( miri) ]
589
- let size = 30 ;
591
+ let step = 66 ;
590
592
let mut map: BTreeMap < _ , _ > = ( 0 ..size) . map ( |i| ( i, i) ) . collect ( ) ;
591
593
592
- for i in 0 ..size {
593
- for j in i..size {
594
+ for i in ( 0 ..size) . step_by ( step ) {
595
+ for j in ( i..size) . step_by ( step ) {
594
596
let mut kvs = map. range_mut ( ( Included ( & i) , Included ( & j) ) ) . map ( |( & k, & mut v) | ( k, v) ) ;
595
597
let mut pairs = ( i..=j) . map ( |i| ( i, i) ) ;
596
598
@@ -758,10 +760,7 @@ fn test_bad_zst() {
758
760
#[ test]
759
761
fn test_clone ( ) {
760
762
let mut map = BTreeMap :: new ( ) ;
761
- #[ cfg( not( miri) ) ] // Miri is too slow
762
- let size = 100 ;
763
- #[ cfg( miri) ]
764
- let size = 30 ;
763
+ let size = 12 ; // to obtain height 2 tree (having edges to leaf nodes)
765
764
assert_eq ! ( map. len( ) , 0 ) ;
766
765
767
766
for i in 0 ..size {
@@ -788,24 +787,36 @@ fn test_clone() {
788
787
assert_eq ! ( map. len( ) , size / 2 - i - 1 ) ;
789
788
assert_eq ! ( map, map. clone( ) ) ;
790
789
}
790
+
791
+ // Full 2-level and minimal 3-level tree (sizes 143, 144 -- the only ones we clone for).
792
+ for i in 1 ..=144 {
793
+ assert_eq ! ( map. insert( i, i) , None ) ;
794
+ assert_eq ! ( map. len( ) , i) ;
795
+ if i >= 143 {
796
+ assert_eq ! ( map, map. clone( ) ) ;
797
+ }
798
+ }
791
799
}
792
800
793
801
#[ test]
794
802
fn test_clone_from ( ) {
795
803
let mut map1 = BTreeMap :: new ( ) ;
796
- let size = 30 ;
804
+ let max_size = 12 ; // to obtain height 2 tree (having edges to leaf nodes)
797
805
798
- for i in 0 ..size {
806
+ // Range to max_size inclusive, because i is the size of map1 being tested.
807
+ for i in 0 ..=max_size {
799
808
let mut map2 = BTreeMap :: new ( ) ;
800
809
for j in 0 ..i {
801
810
let mut map1_copy = map2. clone ( ) ;
802
- map1_copy. clone_from ( & map1) ;
811
+ map1_copy. clone_from ( & map1) ; // small cloned from large
803
812
assert_eq ! ( map1_copy, map1) ;
804
813
let mut map2_copy = map1. clone ( ) ;
805
- map2_copy. clone_from ( & map2) ;
814
+ map2_copy. clone_from ( & map2) ; // large cloned from small
806
815
assert_eq ! ( map2_copy, map2) ;
807
816
map2. insert ( 100 * j + 1 , 2 * j + 1 ) ;
808
817
}
818
+ map2. clone_from ( & map1) ; // same length
819
+ assert_eq ! ( map2, map1) ;
809
820
map1. insert ( i, 10 * i) ;
810
821
}
811
822
}
@@ -956,6 +967,7 @@ create_append_test!(test_append_145, 145);
956
967
// Tests for several randomly chosen sizes.
957
968
create_append_test ! ( test_append_170, 170 ) ;
958
969
create_append_test ! ( test_append_181, 181 ) ;
970
+ #[ cfg( not( miri) ) ] // Miri is too slow
959
971
create_append_test ! ( test_append_239, 239 ) ;
960
972
#[ cfg( not( miri) ) ] // Miri is too slow
961
973
create_append_test ! ( test_append_1700, 1700 ) ;
0 commit comments