use ariadnetor_tensor::{DenseTensorData, MemoryOrder};
#[test]
fn test_expand_column_major() {
let t = DenseTensorData::<f64>::from_raw_parts(
vec![1.0, 3.0, 2.0, 4.0],
vec![2, 2],
MemoryOrder::ColumnMajor,
);
let e = t.expand(&[(1, 1), (1, 1)]);
assert_eq!(e.shape(), &[4, 4]);
assert_eq!(
e.data(),
&[
0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 3.0, 0.0, 0.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0
]
);
}
#[test]
fn test_expand_3d_rm() {
let data: Vec<f64> = (1..=24).map(|i| i as f64).collect();
let t = DenseTensorData::from_raw_parts(data, vec![2, 3, 4], MemoryOrder::RowMajor);
let e = t.expand(&[(1, 0), (0, 1), (2, 2)]);
assert_eq!(e.shape(), &[3, 4, 8]);
assert_eq!(e.data()[0], 0.0);
assert_eq!(e.data()[34], 1.0);
}
#[test]
fn test_expand_no_inner_pad_rm() {
let data: Vec<f64> = (1..=12).map(|i| i as f64).collect();
let t = DenseTensorData::from_raw_parts(data, vec![3, 4], MemoryOrder::RowMajor);
let e = t.expand(&[(2, 1), (0, 0)]);
assert_eq!(e.shape(), &[6, 4]);
assert_eq!(e.data()[0], 0.0);
assert_eq!(e.data()[7], 0.0);
assert_eq!(e.data()[8], 1.0); assert_eq!(e.data()[11], 4.0); assert_eq!(e.data()[19], 12.0); assert_eq!(e.data()[20], 0.0); }