use std::fmt::Debug; use rand::{ seq::SliceRandom, thread_rng, }; use sorting; use test_case::test_case; use sorting::bubble_sort::sort; #[test_case((0..20).rev().collect(), (0..20).collect(); "integers")] #[test_case(vec ! ["c", "b", "a"], vec ! ["a", "b", "c"]; "strings")] #[test_case(vec ! [6.0, 10.0, 2.0, 4.0, 8.0], vec ! [2.0, 4.0, 6.0, 8.0, 10.0]; "floats")] fn can_bubble_sort(mut actual: Vec, expected: Vec) { // Arrange actual.shuffle(&mut thread_rng()); // Act sort(&mut actual); // Assert assert_eq!(actual, expected); }