From 9cf1a47aff8840faf338b09b483363a19a4dbadc Mon Sep 17 00:00:00 2001 From: Leynos Date: Mon, 7 Jul 2025 22:50:31 +0100 Subject: [PATCH 1/2] Add queue_frames edge case tests --- tests/connection_actor.rs | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tests/connection_actor.rs b/tests/connection_actor.rs index c23403d8..2fc7f64b 100644 --- a/tests/connection_actor.rs +++ b/tests/connection_actor.rs @@ -119,11 +119,66 @@ async fn queue_frames( highs.into_iter().chain(lows.into_iter()).collect() } +// Ensure the helper correctly handles edge cases without queued frames. +#[rstest] +#[tokio::test] +async fn queue_frames_empty_input(queues: (PushQueues, wireframe::push::PushHandle)) { + let (_, handle) = queues; + let priorities: &[Priority] = &[]; + let result = queue_frames(priorities, &handle, 0).await; + assert!(result.is_empty(), "Expected empty output for empty input"); +} + +#[rstest] +#[tokio::test] +async fn queue_frames_single_high(queues: (PushQueues, wireframe::push::PushHandle)) { + let (_, handle) = queues; + let order = [Priority::High]; + let result = queue_frames(&order, &handle, 1).await; + assert_eq!( + result, + vec![1u8], + "Expected output to contain only the high-priority frame" + ); +} + +#[rstest] +#[tokio::test] +async fn queue_frames_single_low(queues: (PushQueues, wireframe::push::PushHandle)) { + let (_, handle) = queues; + let order = [Priority::Low]; + let result = queue_frames(&order, &handle, 0).await; + assert_eq!( + result, + vec![1u8], + "Expected output to contain only the low-priority frame" + ); +} + +#[rstest] +#[tokio::test] +async fn queue_frames_mixed_single_elements( + queues: (PushQueues, wireframe::push::PushHandle), +) { + let (_, handle) = queues; + let order = [Priority::High, Priority::Low]; + let result = queue_frames(&order, &handle, 1).await; + assert_eq!( + result, + vec![1u8, 2u8], + "Expected output to contain high then low frame" + ); +} + #[rstest] #[case(vec![Priority::High, Priority::High, Priority::High, Priority::Low, Priority::Low])] #[case(vec![Priority::Low, Priority::Low, Priority::High, Priority::High, Priority::High])] #[case(vec![Priority::High; 3])] #[case(vec![Priority::Low; 3])] +#[case(Vec::new())] +#[case(vec![Priority::High])] +#[case(vec![Priority::Low])] +#[case(vec![Priority::High, Priority::Low])] #[tokio::test] async fn processes_all_priorities_in_order( #[case] order: Vec, From 25404aa7fd145c7a0ec0589423e1ff552b1d7fc2 Mon Sep 17 00:00:00 2001 From: Leynos Date: Tue, 8 Jul 2025 08:23:17 +0100 Subject: [PATCH 2/2] Remove redundant queue frame tests --- tests/connection_actor.rs | 41 --------------------------------------- 1 file changed, 41 deletions(-) diff --git a/tests/connection_actor.rs b/tests/connection_actor.rs index 2fc7f64b..20380298 100644 --- a/tests/connection_actor.rs +++ b/tests/connection_actor.rs @@ -129,47 +129,6 @@ async fn queue_frames_empty_input(queues: (PushQueues, wireframe::push::Push assert!(result.is_empty(), "Expected empty output for empty input"); } -#[rstest] -#[tokio::test] -async fn queue_frames_single_high(queues: (PushQueues, wireframe::push::PushHandle)) { - let (_, handle) = queues; - let order = [Priority::High]; - let result = queue_frames(&order, &handle, 1).await; - assert_eq!( - result, - vec![1u8], - "Expected output to contain only the high-priority frame" - ); -} - -#[rstest] -#[tokio::test] -async fn queue_frames_single_low(queues: (PushQueues, wireframe::push::PushHandle)) { - let (_, handle) = queues; - let order = [Priority::Low]; - let result = queue_frames(&order, &handle, 0).await; - assert_eq!( - result, - vec![1u8], - "Expected output to contain only the low-priority frame" - ); -} - -#[rstest] -#[tokio::test] -async fn queue_frames_mixed_single_elements( - queues: (PushQueues, wireframe::push::PushHandle), -) { - let (_, handle) = queues; - let order = [Priority::High, Priority::Low]; - let result = queue_frames(&order, &handle, 1).await; - assert_eq!( - result, - vec![1u8, 2u8], - "Expected output to contain high then low frame" - ); -} - #[rstest] #[case(vec![Priority::High, Priority::High, Priority::High, Priority::Low, Priority::Low])] #[case(vec![Priority::Low, Priority::Low, Priority::High, Priority::High, Priority::High])]