diff --git a/src/legs.rs b/src/legs.rs index 6779fb4..3aff684 100644 --- a/src/legs.rs +++ b/src/legs.rs @@ -51,7 +51,7 @@ fn landed(prev_position: &Position, position: &Position) -> bool { (&prev_position, &position), (Position::Flying { .. }, Position::Flying { .. }) ) && position.datetime() - prev_position.datetime() > time::Duration::minutes(5) - && position.altitude() < 10000.0) + && (position.altitude() < 10000.0 || prev_position.altitude() < 10000.0)) } fn is_grounded(prev_position: &Position, position: &Position) -> bool { @@ -62,7 +62,7 @@ fn is_grounded(prev_position: &Position, position: &Position) -> bool { (&prev_position, &position), (Position::Flying { .. }, Position::Flying { .. }) ) && position.datetime() - prev_position.datetime() > time::Duration::minutes(5) - && position.altitude() < 10000.0) + && (position.altitude() < 10000.0 || prev_position.altitude() < 10000.0)) } /// Returns a set of [`Leg`]s from a sequence of [`Position`]s. diff --git a/tests/it/main.rs b/tests/it/main.rs index c6a9b4d..eb548cf 100644 --- a/tests/it/main.rs +++ b/tests/it/main.rs @@ -96,3 +96,10 @@ async fn multi_day_legs() -> Result<(), Box> { assert_eq!(legs.len(), 6); Ok(()) } + +#[tokio::test] +async fn case_459257_2023_12_17() -> Result<(), Box> { + let legs = legs(date!(2023 - 12 - 17), date!(2023 - 12 - 20), "459257", None).await?; + assert_eq!(legs.len(), 4); + Ok(()) +}