diff --git a/src/sorting/bubble_sort.rs b/src/sorting/bubble_sort.rs index 0df7cec07a1..3532a259b50 100644 --- a/src/sorting/bubble_sort.rs +++ b/src/sorting/bubble_sort.rs @@ -1,3 +1,5 @@ +/// This function works only with integers +/// For ordering float values use https://crates.io/crates/float-ord pub fn bubble_sort(arr: &mut [T]) { if arr.is_empty() { return; @@ -21,6 +23,8 @@ mod tests { use super::*; use crate::sorting::have_same_elements; use crate::sorting::is_sorted; + use rand::rng; + use rand::seq::SliceRandom; #[test] fn descending() { @@ -46,4 +50,33 @@ mod tests { bubble_sort(&mut ve3); assert!(is_sorted(&ve3) && have_same_elements(&ve3, &cloned)); } + #[test] + fn duplicate() { + let mut ve3: Vec = vec![2, 3, 3, 5, 7, 1, 1]; + let cloned = ve3.clone(); + bubble_sort(&mut ve3); + assert!(is_sorted(&ve3) && have_same_elements(&ve3, &cloned)); + } + #[test] + fn negative() { + let mut ve3: Vec = (-10..-1).rev().collect(); + let cloned = ve3.clone(); + bubble_sort(&mut ve3); + assert!(is_sorted(&ve3) && have_same_elements(&ve3, &cloned)); + } + #[test] + fn withnull() { + let mut ve3 = vec![2, 3, -3, 5, 7, 0, 1]; + let cloned = ve3.clone(); + bubble_sort(&mut ve3); + assert!(is_sorted(&ve3) && have_same_elements(&ve3, &cloned)); + } + #[test] + fn long() { + let mut ve3: Vec = (10..39000).collect(); + ve3.shuffle(&mut rng()); + let cloned = ve3.clone(); + bubble_sort(&mut ve3); + assert!(is_sorted(&ve3) && have_same_elements(&ve3, &cloned)); + } }