* Bug #13409 fixed - permute(x, dims) failed when dims was greater than the dimension...
[scilab.git] / scilab / modules / elementary_functions / tests / nonreg_tests / bug_13409.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2014 - Scilab Enterprises - Pierre-Aime Agnel
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- Non-regression test for bug  -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/13409
12 //
13 // <-- Short Description -->
14 // permute(x, dims) failed when dims was greater than the dimensions of size(x)
15 // now permute treats extra dimensions as 1
16 //
17 // <-- CLI SHELL MODE -->
18
19 x = matrix(1:6, [2, 3]);
20 // x is of size 2, 2 so has 2 dimension
21
22 res = permute(x, [3 2 1]); // this permutes x across the 3rd dimension
23 // #Explanation
24 // Dimensions are changed according to dims
25 // * Number of lines becomes number of pages = 2
26 // * Number of columns is unchanged = 3
27 // * Number of pages becomes number of lines = 1
28 ref = [1 3 5];
29 ref(:,:,2) = [2 4 6];
30
31 assert_checkequal(res, ref);
32
33 // Check for extra dimensions
34 x = matrix(1:12, [3 2 2]);
35 res = permute(x, [2 3 1 4]);
36 // Dimensions are changed according to dims
37 // * Number of lines becomes number of columns = 2
38 // * Number of columns becomes number of pages = 2
39 // * Number of pages1 becomes number of lines = 3
40 // * Number of pages2 becomes number of pages2 = 1
41 // Extra dimension is squeezed
42 ref = permute(x, [2 3 1]);
43 assert_checkequal(res, ref);
44
45 x = matrix(1:12, [3 2 2]);
46 res = permute(x, [3 4 1 2]);
47 // Dimensions are changed according to dims
48 // * Number of lines becomes number of pages1 = 2
49 // * Number of columns becomes number of pages2 = 1
50 // * Number of pages1 becomes number of lines = 3
51 // * Number of pages2 becomes number of columns = 2
52 ref = [1 7]';
53 ref(:,:,2,1) = [2 8]';
54 ref(:,:,3,1) = [3 9]';
55 ref(:,:,1,2) = [4 10]';
56 ref(:,:,2,2) = [5 11]';
57 ref(:,:,3,2) = [6 12]';
58 assert_checkequal(res, ref);
59
60 x = matrix(1:12, [3 2 2]);
61 res = permute(x, 1:10);
62 // Extra dimensions are squeezed
63 assert_checkequal(x, res);
64
65 // Bug #13409 test case
66 dims=3; A1=matrix(1:12, [2,2,3]); A2=[13 14;15 16]; A3=matrix(21:36,[2,2,4]); y=cat(dims,A1,A2,A3);
67 assert_checkequal(A1, y(:,:,1:3));
68 assert_checkequal(A2, y(:,:,4));
69 assert_checkequal(A3, y(:,:,5:8));