library_tests/
test_numeric_array_conversions.rs

1use wolfram_library_link::{
2    self as wll, NumericArray, NumericArrayConvertMethod as Method,
3};
4
5fn from_slice<T: wll::NumericArrayType>(slice: &[T]) -> NumericArray<T> {
6    NumericArray::from_slice(slice)
7}
8
9#[wll::export]
10fn test_na_conversions() {
11    //
12    // i16 -> i8 conversions
13    //
14
15    assert!(from_slice(&[i16::MAX])
16        .convert_to::<i8>(Method::Check, 1.0)
17        .is_err());
18
19    assert!(from_slice(&[i16::MAX])
20        .convert_to::<i8>(Method::Cast, 1.0)
21        .is_err());
22
23    assert!(from_slice(&[i16::MAX])
24        .convert_to::<i8>(Method::Coerce, 1.0)
25        .is_err());
26
27    assert!(from_slice(&[i16::MAX])
28        .convert_to::<i8>(Method::Round, 1.0)
29        .is_err());
30
31    assert_eq!(
32        from_slice(&[i16::MAX])
33            .convert_to::<i8>(Method::Scale, 1.0)
34            .unwrap()
35            .as_slice(),
36        [i8::MAX]
37    );
38}