use numrs::backend::dispatch::{get_backend_override, set_backend_override};
use numrs::{add, mul, Array};
#[test]
fn test_backend_override_cycle() {
set_backend_override(Some("cpu"));
assert_eq!(get_backend_override().as_deref(), Some("cpu"));
let a = Array::new(vec![10], vec![1.0; 10]);
let b = Array::new(vec![10], vec![2.0; 10]);
let c = add(&a, &b).expect("add failed on cpu");
assert_eq!(c.data[0], 3.0);
set_backend_override(None);
assert_eq!(get_backend_override(), None);
let d = mul(&a, &b).expect("mul failed on default");
assert_eq!(d.data[0], 2.0);
}
#[test]
fn test_backend_override_gpu_fallback() {
set_backend_override(Some("cpu"));
let a = Array::new(vec![5], vec![1.0; 5]);
let b = Array::new(vec![5], vec![1.0; 5]);
let res = add(&a, &b).unwrap();
assert_eq!(res.data, vec![2.0; 5]);
set_backend_override(None);
}