Skip to content

Commit ee7f435

Browse files
committed
shape: Add test for into_shape_clone
1 parent a5a4b98 commit ee7f435

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

tests/reshape.rs

+48
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,51 @@ fn into_shape_with_order() {
268268
assert_eq!(s.shape(), &[4, 2]);
269269
assert_eq!(s, array![[1, 5], [2, 6], [3, 7], [4, 8]]);
270270
}
271+
272+
#[test]
273+
fn into_shape_clone() {
274+
// 1D -> C -> C
275+
{
276+
let data = [1, 2, 3, 4, 5, 6, 7, 8];
277+
let v = Array::from(data.to_vec());
278+
let u = v.clone().into_shape_clone(((3, 3), Order::RowMajor));
279+
assert!(u.is_err());
280+
281+
let u = v.clone().into_shape_clone(((2, 2, 2), Order::C));
282+
assert!(u.is_ok());
283+
284+
let u = u.unwrap();
285+
assert_eq!(u.shape(), &[2, 2, 2]);
286+
assert_eq!(u, array![[[1, 2], [3, 4]], [[5, 6], [7, 8]]]);
287+
288+
let s = u.into_shape_clone((4, 2)).unwrap();
289+
assert_eq!(s.shape(), &[4, 2]);
290+
assert_eq!(s, aview2(&[[1, 2], [3, 4], [5, 6], [7, 8]]));
291+
292+
let u = v.clone().into_shape_clone(((2, 2, 2), Order::F));
293+
assert!(u.is_ok());
294+
295+
let u = u.unwrap();
296+
assert_eq!(u.shape(), &[2, 2, 2]);
297+
assert_eq!(u, array![[[1, 5], [3, 7]], [[2, 6], [4, 8]]]);
298+
}
299+
300+
// 1D -> F -> F
301+
{
302+
let data = [1, 2, 3, 4, 5, 6, 7, 8];
303+
let v = Array::from(data.to_vec());
304+
let u = v.clone().into_shape_clone(((3, 3), Order::ColumnMajor));
305+
assert!(u.is_err());
306+
307+
let u = v.into_shape_clone(((2, 2, 2), Order::ColumnMajor));
308+
assert!(u.is_ok());
309+
310+
let u = u.unwrap();
311+
assert_eq!(u.shape(), &[2, 2, 2]);
312+
assert_eq!(u, array![[[1, 5], [3, 7]], [[2, 6], [4, 8]]]);
313+
314+
let s = u.into_shape_clone(((4, 2), Order::ColumnMajor)).unwrap();
315+
assert_eq!(s.shape(), &[4, 2]);
316+
assert_eq!(s, array![[1, 5], [2, 6], [3, 7], [4, 8]]);
317+
}
318+
}

0 commit comments

Comments
 (0)