Elementry_functions: permute() rewritten
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / permute.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 //
10
11 // With a real matrix
12 x = [1 2 3; 4 5 6];
13 y = permute(x, [2 1]);
14
15 assert_checkequal(y, x');
16
17 // With an integer matrix
18 x = int32(x);
19 y = permute(x, [2 1]);
20
21 assert_checkequal(y, x');
22
23 // With a string matrix
24 x = string(x);
25 y = permute(x, [2 1]);
26
27 assert_checkequal(y, x');
28
29 // With a complex matrix
30 x = [1 2 3; 4 5 6]*%i;
31 y = permute(x, [2 1]);
32 refY = [1 4; 2 5; 3 6]*%i;
33
34 assert_checkequal(y, refY);
35
36 // With a real hypermatrix
37 x = matrix(1:12, [2, 3, 2]);
38 y = permute(x, [3 1 2]);
39 clear refY
40 refY(:, :, 1) = [1 2; 7 8];
41 refY(:, :, 2) = [3 4; 9 10];
42 refY(:, :, 3) = [5 6; 11 12];
43
44 assert_checkequal(y, refY);
45
46 // With an integer hypermatrix
47 x = int32(x);
48 y = permute(x, [3 1 2]);
49 refY = int32(refY);
50
51 assert_checkequal(y, refY);
52
53 // With a string hypermatrix
54 x = string(x);
55 y = permute(x, [3 1 2]);
56 refY = string(refY);
57
58 assert_checkequal(y, refY);
59
60 // With a complex hypermatrix
61 x = matrix(1:12, [2, 3, 2])*%i;
62 y = permute(x, [3 1 2]);
63 clear refY
64 refY(:, :, 1) = [1 2; 7 8]*%i;
65 refY(:, :, 2) = [3 4; 9 10]*%i;
66 refY(:, :, 3) = [5 6; 11 12]*%i;
67
68 assert_checkequal(y, refY);
69
70 // Error checks
71 refMsg = msprintf(_("%s: Wrong size for input argument #%d: At least the size of input argument #%d expected.\n"), "permute", 2, 1);
72 assert_checkerror("permute(x, [1 2]);", refMsg);
73 refMsg = msprintf(_("%s: Wrong size for input argument #%d.\n"), "permute", 2);
74 assert_checkerror("permute(x, [1 2 4]);", refMsg);
75 assert_checkerror("permute(x, [1 2 3 5]);", refMsg);