@@ -314,17 +314,17 @@ impl Intersections {
314
314
. base_interval
315
315
. try_lock ( )
316
316
. expect ( "failed to lock interval" ) ;
317
- if oi. start ( ) < bi. start ( ) || oi. stop ( ) > bi. stop ( ) {
318
- let mut oc = oi. clone_box ( ) ;
317
+ //if oi.start() < bi.start() || oi.stop() > bi.stop() {
318
+ if oi. start ( ) > bi. start ( ) || oi. stop ( ) < bi. stop ( ) {
319
+ let mut oc = bi. clone_box ( ) ;
319
320
oc. set_start ( oi. start ( ) . max ( bi. start ( ) ) ) ;
320
321
oc. set_stop ( oi. stop ( ) . min ( bi. stop ( ) ) ) ;
321
322
drop ( bi) ;
322
323
drop ( oi) ;
323
324
Arc :: new ( Mutex :: new ( oc) )
324
325
} else {
325
- drop ( bi) ;
326
326
drop ( oi) ;
327
- o . interval . clone ( )
327
+ Arc :: new ( Mutex :: new ( bi . clone_box ( ) ) )
328
328
}
329
329
} )
330
330
. collect ( )
@@ -692,22 +692,18 @@ mod tests {
692
692
ro. a_requirements = OverlapAmount :: Bases ( 1 ) ;
693
693
ro. b_requirements = OverlapAmount :: Bases ( 1 ) ;
694
694
let r = intersections. report ( & ro) ;
695
- assert_eq ! ( r. len( ) , 2 ) ;
695
+ assert_eq ! ( r. len( ) , 1 ) ;
696
696
let rf = & r[ 0 ] ;
697
697
// test that a is 1-10
698
698
assert_eq ! ( rf. a. as_ref( ) . unwrap( ) . lock( ) . start( ) , 1 ) ;
699
699
assert_eq ! ( rf. a. as_ref( ) . unwrap( ) . lock( ) . stop( ) , 10 ) ;
700
700
// test that b is 3-6
701
- assert_eq ! ( rf. b. len( ) , 1 ) ;
701
+ assert_eq ! ( rf. b. len( ) , 2 ) ;
702
702
assert_eq ! ( rf. b[ 0 ] . lock( ) . start( ) , 3 ) ;
703
703
assert_eq ! ( rf. b[ 0 ] . lock( ) . stop( ) , 6 ) ;
704
704
705
- let rf = & r[ 1 ] ;
706
- assert_eq ! ( rf. a. as_ref( ) . unwrap( ) . lock( ) . start( ) , 1 ) ;
707
- assert_eq ! ( rf. a. as_ref( ) . unwrap( ) . lock( ) . stop( ) , 10 ) ;
708
- assert_eq ! ( rf. b. len( ) , 1 ) ;
709
- assert_eq ! ( rf. b[ 0 ] . lock( ) . start( ) , 8 ) ;
710
- assert_eq ! ( rf. b[ 0 ] . lock( ) . stop( ) , 12 ) ;
705
+ assert_eq ! ( rf. b[ 1 ] . lock( ) . start( ) , 8 ) ;
706
+ assert_eq ! ( rf. b[ 1 ] . lock( ) . stop( ) , 12 ) ;
711
707
}
712
708
713
709
#[ test]
@@ -721,6 +717,7 @@ mod tests {
721
717
ro. a_requirements = OverlapAmount :: Bases ( 1 ) ;
722
718
ro. b_requirements = OverlapAmount :: Bases ( 1 ) ;
723
719
let r = intersections. report ( & ro) ;
720
+ eprintln ! ( "r: {:?}" , r) ;
724
721
// a: 3-6, b: 3-6
725
722
// a: 8-10, b: 8-10
726
723
eprintln ! ( "{:?}" , r) ;
0 commit comments