use std::any::type_name_of_val;
use ferray_strings::{array, count, str_len};
#[test]
fn divergence_str_len_counts_codepoints_not_bytes() {
let a = array(&["héllo", "naïve"]).unwrap();
let r = str_len(&a).unwrap();
let got: Vec<i64> = r.as_slice().unwrap().to_vec();
assert_eq!(
got,
vec![5i64, 5i64],
"str_len must count Unicode code points (numpy num_codepoints), got byte lengths"
);
}
#[test]
fn divergence_str_len_returns_signed_int64() {
let a = array(&["a"]).unwrap();
let r = str_len(&a).unwrap();
let elem = r.as_slice().unwrap()[0];
let tn = type_name_of_val(&elem);
assert_eq!(
tn, "i64",
"str_len result element type must be signed i64 to mirror numpy NPY_DEFAULT_INT (int64); got {tn}"
);
}
#[test]
fn divergence_count_returns_signed_int64() {
let a = array(&["a"]).unwrap();
let r = count(&a, "a").unwrap();
let elem = r.as_slice().unwrap()[0];
let tn = type_name_of_val(&elem);
assert_eq!(
tn, "i64",
"count result element type must be signed i64 to mirror numpy int64; got {tn}"
);
}