use std::cmp::Ordering;
use super::index_of_;
pub const fn cmp_min() -> fn(&f64, &f64) -> Ordering {
|a, b| a.partial_cmp(b).unwrap()
}
pub fn index_of_min(numbers: &[f64]) -> usize {
index_of_(numbers, cmp_min())
}
#[test]
fn test_last_neg() {
let numbers = vec![3344.0, 554.0, 56.0, 7.0, -4.0];
assert_eq!(index_of_min(&numbers), 4);
}
#[test]
fn test_basic_min() {
let numbers = vec![4.5, 2.0, 3.3];
assert_eq!(index_of_min(&numbers), 1);
}
#[test]
fn test_with_nan() {
let numbers = vec![f64::NAN, 5.5, 1.0, f64::NAN];
assert_eq!(index_of_min(&numbers), 2);
}
#[test]
#[should_panic]
fn test_all_nan() {
let numbers = vec![f64::NAN, f64::NAN];
index_of_min(&numbers);
}
#[test]
fn test_negative_numbers() {
let numbers = vec![2.0, -5.0, 0.0];
assert_eq!(index_of_min(&numbers), 1);
}
#[test]
fn test_single_element() {
let numbers = vec![42.0];
assert_eq!(index_of_min(&numbers), 0);
}
#[test]
#[should_panic]
fn test_empty() {
let numbers = vec![];
index_of_min(&numbers);
}