@@ -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