@@ -268,3 +268,51 @@ fn into_shape_with_order() {
268
268
assert_eq ! ( s. shape( ) , & [ 4 , 2 ] ) ;
269
269
assert_eq ! ( s, array![ [ 1 , 5 ] , [ 2 , 6 ] , [ 3 , 7 ] , [ 4 , 8 ] ] ) ;
270
270
}
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