diff --git a/src/applogic/v2x/map.rs b/src/applogic/v2x/map.rs index c8f781f..bac8a69 100644 --- a/src/applogic/v2x/map.rs +++ b/src/applogic/v2x/map.rs @@ -534,9 +534,12 @@ impl Ord for Maneuvers { core::cmp::Ordering::Greater } } - // (only straight) > omni + // (only straight) > omni or left or left+straight (false, true, false) => { - if other.eq(&Maneuvers::new(true, true, true)) { + if other.eq(&Maneuvers::new(true, true, true)) + || other.eq(&Maneuvers::new(true, false, false)) + || other.eq(&Maneuvers::new(true, true, false)) + { core::cmp::Ordering::Greater } else { core::cmp::Ordering::Less @@ -1030,5 +1033,21 @@ mod tests { assert_eq!(straight, sorted[3]); assert_eq!(straight_and_right, sorted[4]); assert_eq!(right, sorted[5]); + + // was a bug at 2026-06-21 + let maneuvers = vec![right, left, straight_and_left, straight]; + + let mut sorted = maneuvers.clone(); + sorted.sort(); + + println!("Sorted maneuvers:"); + for manv in &sorted { + println!("- {manv}"); + } + + assert_eq!(left, sorted[0]); + assert_eq!(straight_and_left, sorted[1]); + assert_eq!(straight, sorted[2]); + assert_eq!(right, sorted[3]); } }