collenchyma 0.0.8

high-performance computation on any hardware
Documentation
extern crate collenchyma as co;

#[cfg(test)]
mod tensor_spec {
    use co::prelude::*;

    #[test]
    fn it_returns_correct_tensor_desc_stride() {
        let tensor_desc_r0: TensorDesc = vec!();
        let tensor_desc_r1: TensorDesc = vec!(5);
        let tensor_desc_r2: TensorDesc = vec!(2, 4);
        let tensor_desc_r3: TensorDesc = vec!(2, 2, 4);
        let tensor_desc_r4: TensorDesc = vec!(2, 2, 4, 4);
        let r0: Vec<usize> = vec!();
        assert_eq!(r0, tensor_desc_r0.default_stride());
        assert_eq!(vec![1], tensor_desc_r1.default_stride());
        assert_eq!(vec![4, 1], tensor_desc_r2.default_stride());
        assert_eq!(vec![8, 4, 1], tensor_desc_r3.default_stride());
        assert_eq!(vec![32, 16, 4, 1], tensor_desc_r4.default_stride());
    }

    #[test]
    fn it_returns_correct_size_for_rank_0() {
        // In order for correct memory allocation of scala Tensor, the size should never return less than 1.
        let tensor_desc_r0: TensorDesc = vec!();
        assert_eq!(1, tensor_desc_r0.size());

        let tensor_desc_r0_into = <() as IntoTensorDesc>::into(&());
        assert_eq!(1, tensor_desc_r0_into.size());
    }

    #[test]
    fn it_resizes_tensor() {
        let native = Backend::<Native>::default().unwrap();
        let mut tensor = SharedTensor::<f32>::new(native.device(), &(10, 20, 30)).unwrap();
        assert_eq!(tensor.desc(), &[10, 20, 30]);
        tensor.resize(&(2, 3, 4, 5)).unwrap();
        assert_eq!(tensor.desc(), &[2, 3, 4, 5]);
    }
}