use super::super::countifs_fn;
use crate::types::Value;
fn nums(ns: &[f64]) -> Value {
Value::Array(ns.iter().map(|&n| Value::Number(n)).collect())
}
#[test]
fn no_matches_returns_zero() {
let range = nums(&[1.0, 2.0, 3.0]);
let result = countifs_fn(&[
range.clone(),
Value::Text(">5".to_string()),
range.clone(),
Value::Text("<10".to_string()),
]);
assert_eq!(result, Value::Number(0.0));
}
#[test]
fn all_match_returns_full_count() {
let range = nums(&[1.0, 2.0, 3.0]);
let result = countifs_fn(&[
range.clone(),
Value::Text(">=1".to_string()),
range.clone(),
Value::Text("<=3".to_string()),
]);
assert_eq!(result, Value::Number(3.0));
}
#[test]
fn empty_array_returns_zero() {
let result = countifs_fn(&[Value::Array(vec![]), Value::Number(1.0)]);
assert_eq!(result, Value::Number(0.0));
}
#[test]
fn scalar_range_single_element() {
let result = countifs_fn(&[Value::Number(5.0), Value::Number(5.0)]);
assert_eq!(result, Value::Number(1.0));
}