use integral::{Basis, IntegralError, Shell};
#[test]
fn l6_is_accepted_and_computes() {
let sh = Shell::new(6, [0.0, 0.0, 0.0], vec![1.0], vec![1.0]).unwrap();
assert_eq!(sh.n_cart(), 28); let basis = Basis::new(vec![sh]);
let s = basis.overlap();
assert_eq!(s.len(), 28 * 28);
assert!((s[0] - 1.0).abs() < 1e-12, "diag[0] (x^6) = {}", s[0]);
for i in 0..28 {
let d = s[i * 28 + i];
assert!(d.is_finite() && d > 0.0, "diag[{i}] = {d}");
}
}
#[test]
fn l7_fails_cleanly() {
let err = Shell::new(7, [0.0, 0.0, 0.0], vec![1.0], vec![1.0]).unwrap_err();
assert_eq!(err, IntegralError::AngularMomentumTooHigh { l: 7, max: 6 });
let msg = err.to_string();
assert!(
msg.contains("angular momentum") && msg.contains('7') && msg.contains('6'),
"{msg}"
);
}