use sorting_race::models::traits::Sorter;
use sorting_race::services::sorters::{bubble::BubbleSort, merge::MergeSort, quick::QuickSort};
#[test]
fn test_bubble_sort_reports_memory() {
let mut sorter = BubbleSort::new();
let test_data = vec![5, 2, 8, 1, 9];
sorter.reset(test_data);
let telemetry = sorter.get_telemetry();
assert!(
telemetry.memory_current > 0,
"BubbleSort should report memory usage"
);
assert!(
telemetry.memory_current >= 20,
"BubbleSort memory should be at least 20 bytes, got {}",
telemetry.memory_current
);
}
#[test]
fn test_merge_sort_reports_extra_memory() {
let mut sorter = MergeSort::new();
let test_data = vec![5, 2, 8, 1, 9];
sorter.reset(test_data);
let telemetry = sorter.get_telemetry();
assert!(
telemetry.memory_current > 20,
"MergeSort should report extra memory for temp buffer, got {}",
telemetry.memory_current
);
}
#[test]
fn test_quick_sort_reports_memory() {
let mut sorter = QuickSort::new();
let test_data = vec![5, 2, 8, 1, 9];
sorter.reset(test_data);
let telemetry = sorter.get_telemetry();
assert!(
telemetry.memory_current > 0,
"QuickSort should report memory usage"
);
assert!(
telemetry.memory_current >= 16,
"QuickSort memory should report some memory usage, got {}",
telemetry.memory_current
);
}