tenferro-gpu 0.3.0

CubeCL-backed CUDA and WebGPU provider backends for tenferro tensors.
use super::physical_output_descriptor;

#[test]
fn physical_output_descriptor_matches_transposed_destination() {
    let (extents, strides, modes) = physical_output_descriptor("test", &[4, 3], &[3, 1]).unwrap();
    assert_eq!(extents, [3, 4]);
    assert_eq!(strides, [1, 3]);
    assert_eq!(modes, [1, 0]);
}

#[test]
fn physical_output_descriptor_preserves_identity_layout() {
    let (extents, strides, modes) = physical_output_descriptor("test", &[4, 3], &[1, 4]).unwrap();
    assert_eq!(extents, [4, 3]);
    assert_eq!(strides, [1, 4]);
    assert_eq!(modes, [0, 1]);
}

#[test]
fn physical_output_descriptor_rejects_negative_strides() {
    let err = physical_output_descriptor("test", &[4], &[-1]).unwrap_err();
    assert!(err.to_string().contains("negative strides"));
}