@@ -2828,3 +2828,81 @@ fn test_slice_assign()
28282828 * a. slice_mut ( s ! [ 1 ..3 ] ) += 1 ;
28292829 assert_eq ! ( a, array![ 0 , 2 , 3 , 3 , 4 ] ) ;
28302830}
2831+
2832+ #[ test]
2833+ fn reverse_axes ( )
2834+ {
2835+ let mut a = arr2 ( & [ [ 1 , 2 ] , [ 3 , 4 ] ] ) ;
2836+ a. reverse_axes ( ) ;
2837+ assert_eq ! ( a, arr2( & [ [ 1 , 3 ] , [ 2 , 4 ] ] ) ) ;
2838+
2839+ let mut a = arr2 ( & [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] ) ;
2840+ a. reverse_axes ( ) ;
2841+ assert_eq ! ( a, arr2( & [ [ 1 , 4 ] , [ 2 , 5 ] , [ 3 , 6 ] ] ) ) ;
2842+
2843+ let mut a = Array :: from_iter ( 0 ..24 )
2844+ . into_shape_with_order ( ( 2 , 3 , 4 ) )
2845+ . unwrap ( ) ;
2846+ let original = a. clone ( ) ;
2847+ a. reverse_axes ( ) ;
2848+ for ( ( i0, i1, i2) , elem) in original. indexed_iter ( ) {
2849+ assert_eq ! ( * elem, a[ ( i2, i1, i0) ] ) ;
2850+ }
2851+ }
2852+
2853+ #[ test]
2854+ fn permute_axes ( )
2855+ {
2856+ let mut a = arr2 ( & [ [ 1 , 2 ] , [ 3 , 4 ] ] ) ;
2857+ a. permute_axes ( [ 1 , 0 ] ) ;
2858+ assert_eq ! ( a, arr2( & [ [ 1 , 3 ] , [ 2 , 4 ] ] ) ) ;
2859+
2860+ let mut a = Array :: from_iter ( 0 ..24 )
2861+ . into_shape_with_order ( ( 2 , 3 , 4 ) )
2862+ . unwrap ( ) ;
2863+ let original = a. clone ( ) ;
2864+ a. permute_axes ( [ 2 , 1 , 0 ] ) ;
2865+ for ( ( i0, i1, i2) , elem) in original. indexed_iter ( ) {
2866+ assert_eq ! ( * elem, a[ ( i2, i1, i0) ] ) ;
2867+ }
2868+
2869+ let mut a = Array :: from_iter ( 0 ..120 )
2870+ . into_shape_with_order ( ( 2 , 3 , 4 , 5 ) )
2871+ . unwrap ( ) ;
2872+ let original = a. clone ( ) ;
2873+ a. permute_axes ( [ 1 , 0 , 3 , 2 ] ) ;
2874+ for ( ( i0, i1, i2, i3) , elem) in original. indexed_iter ( ) {
2875+ assert_eq ! ( * elem, a[ ( i1, i0, i3, i2) ] ) ;
2876+ }
2877+ }
2878+
2879+ #[ should_panic]
2880+ #[ test]
2881+ fn permute_axes_repeated_axis ( )
2882+ {
2883+ let mut a = Array :: from_iter ( 0 ..24 )
2884+ . into_shape_with_order ( ( 2 , 3 , 4 ) )
2885+ . unwrap ( ) ;
2886+ a. permute_axes ( [ 1 , 0 , 1 ] ) ;
2887+ }
2888+
2889+ #[ should_panic]
2890+ #[ test]
2891+ fn permute_axes_missing_axis ( )
2892+ {
2893+ let mut a = Array :: from_iter ( 0 ..24 )
2894+ . into_shape_with_order ( ( 2 , 3 , 4 ) )
2895+ . unwrap ( )
2896+ . into_dyn ( ) ;
2897+ a. permute_axes ( & [ 2 , 0 ] [ ..] ) ;
2898+ }
2899+
2900+ #[ should_panic]
2901+ #[ test]
2902+ fn permute_axes_oob ( )
2903+ {
2904+ let mut a = Array :: from_iter ( 0 ..24 )
2905+ . into_shape_with_order ( ( 2 , 3 , 4 ) )
2906+ . unwrap ( ) ;
2907+ a. permute_axes ( [ 1 , 0 , 3 ] ) ;
2908+ }
0 commit comments