use candela::{Tensor, arange, ones};
#[test]
fn memory_report_subtract_intermediate() {
let a: Tensor<f32> = arange!(4);
let b: Tensor<f32> = ones!(&[4]);
let sa = a.to_slot();
let sb = b.to_slot();
let sk = ((&sa + &sb) - &sb).into_skeleton(&[sa, sb]).unwrap();
assert_eq!(sk.memory_report().total_number_of_allocations, 1);
}
#[test]
fn memory_report_aliased_operand() {
let base: Tensor<f32> = arange!(4);
let slot = base.to_slot();
let t = &slot + &slot;
let sk = (&t + &t)
.into_skeleton(std::slice::from_ref(&slot))
.unwrap();
assert_eq!(sk.memory_report().total_number_of_allocations, 2);
}
#[test]
fn memory_report_scalar_chain() {
let base: Tensor<f32> = arange!(4);
let slot = base.to_slot();
let sk = ((&slot + &slot) * 0.5 + 1.0)
.into_skeleton(std::slice::from_ref(&slot))
.unwrap();
assert_eq!(sk.memory_report().total_number_of_allocations, 1);
}