* Bug 8297 fixed: cat() slowness was crippling. Rewritten
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / cat.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2016 - Scilab Enterprises - Pierre-Aimé AGNEL
4 // Copyright (C) 2017 - Samuel GOUGEON
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8
9 // <-- NO CHECK REF -->
10 // <-- CLI SHELL MODE -->
11
12 // Unit tests for cat.sci function
13 // ===============================
14
15 assert_checkequal(cat(1,[]), []);
16 assert_checkequal(cat(2,[]), []);
17 assert_checkequal(cat(3,[]), []);
18 m = rand(3,4,2);
19 assert_checkequal(cat(1,m), m);
20 assert_checkequal(cat(2,m), m);
21 assert_checkequal(cat(3,m), m);
22
23 // first example : concatenation according to the rows
24 dims = 1; A1=[1 2 3]; A2=[4 5 6 ; 7 8 9]; A3=[10 11 12];
25 y=cat(dims, A1, A2, A3);
26 res = [1 2 3; 4 5 6; 7 8 9; 10 11 12];
27 assert_checkequal(y, res);,
28 y = cat(dims, A1<5, A2<5, A3<5);
29 assert_checkequal(y, res<5);,
30 y = cat(dims, uint8(A1), uint8(A2), uint8(A3));
31 assert_checkequal(y, uint8(res));,
32 y = cat(dims, string(A1), string(A2), string(A3));
33 assert_checkequal(y, string(res));,
34 A1 = makecell([1 3 2], %pi, %t, "hello", %s, list(-1,"3"), 1/(1-%s));
35 y = cat(1,A1,A1);
36 res = makecell([2 3 2], %pi, %t, "hello", ..
37                         %pi, %t, "hello", ..
38                         %s, list(-1,"3"), 1/(1-%s), ..
39                         %s, list(-1,"3"), 1/(1-%s));
40 assert_checkequal(y, res);
41
42
43 // second example :  concatenation according to the columns
44 dims = 2; A1=[1 2 3]'; A2=[4 5;7 8;9 10];
45 y = cat(dims, A1, A2);
46 res = [1 4 5; 2 7 8; 3 9 10];
47 assert_checkequal(y, res);,
48 y = cat(dims, A1<5, A2<5);
49 assert_checkequal(y, res<5);,
50 y = cat(dims, uint8(A1), uint8(A2));
51 assert_checkequal(y, uint8(res));,
52 y = cat(dims, string(A1), string(A2));
53 assert_checkequal(y, string(res));,
54 A1 = makecell([2 2 2], %pi, %t, "hello", %s, list(-1,"3"), 1/(1-%s), "abc", %i);
55 y = cat(dims, A1, A1);
56 res = makecell([2 4 2], %pi, %t, %pi, %t, ..
57                         "hello", %s, "hello", %s, ..
58                         list(-1,"3"), 1/(1-%s), list(-1,"3"), 1/(1-%s), ..
59                         "abc", %i, "abc", %i);
60 assert_checkequal(y, res);
61
62 // third example : concatenation according to the 3th dimension
63 dims = 3; A1=matrix(1:12,[2,2,3]); A2=[13 15;14 16]; A3=matrix(17:32,[2,2,4]);
64 y=cat(dims, A1, A2, A3);
65 res = matrix( [1:32], [2, 2, 8] );
66 assert_checkequal(y, res);
67 y = cat(dims, A1<5, A2<5, A3<5);
68 assert_checkequal(y, res<5);,
69 y = cat(dims, uint8(A1), uint8(A2), uint8(A3));
70 assert_checkequal(y, uint8(res));,
71 y = cat(dims, string(A1), string(A2), string(A3));
72 assert_checkequal(y, string(res));,
73 A1 = makecell([2 2 2], %pi, %t, "hello", %s, list(-1,"3"), 1/(1-%s), "abc", %i);
74 y = cat(dims, A1, A1(:,:,1));
75 res = makecell([2 2 3], %pi, %t, ..
76                         "hello", %s,..
77                         list(-1,"3"), 1/(1-%s), ..
78                         "abc", %i, ..
79                         %pi, %t, ..
80                         "hello", %s);
81 assert_checkequal(y, res);
82