Skip to content

Commit dd6cae0

Browse files
committed
TEST: Add test for Array::maybe_uninit and .assume_init()
1 parent cb8b1aa commit dd6cae0

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

tests/array-construct.rs

+44
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use defmac::defmac;
99
use ndarray::prelude::*;
10+
use ndarray::Zip;
1011

1112
#[test]
1213
fn test_from_shape_fn() {
@@ -194,3 +195,46 @@ fn deny_wraparound_uninit() {
194195
let _five_large = Array::<f32, _>::uninitialized((3, 7, 29, 36760123, 823996703));
195196
}
196197
}
198+
199+
200+
#[test]
201+
fn maybe_uninit_1() {
202+
use std::mem::MaybeUninit;
203+
204+
unsafe {
205+
// Array
206+
type Mat<D> = Array<MaybeUninit<f32>, D>;
207+
208+
let mut a = Mat::maybe_uninit((10, 10));
209+
a.mapv_inplace(|_| MaybeUninit::new(1.));
210+
211+
let a_init = a.assume_init();
212+
assert_eq!(a_init, Array2::from_elem(a_init.dim(), 1.));
213+
214+
// ArcArray
215+
type ArcMat<D> = ArcArray<MaybeUninit<f32>, D>;
216+
217+
let mut a = ArcMat::maybe_uninit((10, 10));
218+
a.mapv_inplace(|_| MaybeUninit::new(1.));
219+
let a2 = a.clone();
220+
221+
let a_init = a.assume_init();
222+
assert_eq!(a_init, Array2::from_elem(a_init.dim(), 1.));
223+
224+
// ArrayView
225+
let av_init = a2.view().assume_init();
226+
assert_eq!(av_init, Array2::from_elem(a_init.dim(), 1.));
227+
228+
// RawArrayViewMut
229+
let mut a = Mat::maybe_uninit((10, 10));
230+
let v = a.raw_view_mut();
231+
Zip::from(v)
232+
.apply(|ptr| *(*ptr).as_mut_ptr() = 1.);
233+
234+
let u = a.raw_view_mut().assume_init();
235+
236+
Zip::from(u)
237+
.apply(|ptr| assert_eq!(*ptr, 1.));
238+
239+
}
240+
}

0 commit comments

Comments
 (0)