gsort: fix tests after decomplexification
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / gsort_multilevel_text.tst
1 // ===================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2020 - Samuel GOUGEON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // ===================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- NO CHECK REF -->
10 // <-- ENGLISH IMPOSED -->
11 //
12 //====================================================================
13 //             Tests of multilevel gsort() for texts
14 //====================================================================
15
16 t = [
17   "cc"    "ca"    "ab"    "bbca"  "b"     "ccbc"  "aab"   "bca"
18   "ac"    "bba"   "aba"   "bb"    "a"     "cac"   "b"     "b"
19   "aaaa"  "ac"    "b"     "bbca"  "bb"    "bc"    "aa"    "ca"
20   "c"     "ba"    "cbb"   "a"     "aab"   "abbb"  "ac"    "c"
21   "cbb"   "b"     "cabb"  "bccc"  "aba"   "acb"   "acb"   "b"
22   "cba"   "cc"    "a"     "abbb"  "ab"    "cc"    "bba"   "caaa"
23   ];
24
25 // "g" multilevel sorting
26 // ----------------------
27 [r, k] = gsort(t, "g", ["i" "i"], list(length,:));
28 ref = [
29   "a"  "b"   "ab"  "bb"  "cc"   "acb"  "cba"   "bbca"
30   "a"  "b"   "ab"  "bb"  "cc"   "acb"  "cbb"   "bbca"
31   "a"  "b"   "ac"  "bc"  "aab"  "bba"  "cbb"   "bccc"
32   "b"  "c"   "ac"  "ca"  "aab"  "bba"  "aaaa"  "caaa"
33   "b"  "c"   "ac"  "ca"  "aba"  "bca"  "abbb"  "cabb"
34   "b"  "aa"  "ba"  "cc"  "aba"  "cac"  "abbb"  "ccbc"
35   ];
36 kref = [
37   18  38  13  20  12  35   6  19
38   22  44  30  27  36  41   5  21
39   26  47   2  33  28   8  16  23
40   11   4   9   7  37  42   3  48
41   15  46  40  45  14  43  24  17
42   25  39  10   1  29  32  34  31
43   ];
44 assert_checkequal(r, ref);
45 assert_checkequal(k, kref);
46 //
47 [r, k] = gsort(t, "g", ["i" "d"], list(length,:));
48 ref = [
49   "c"  "b"   "cc"  "bb"  "ab"   "bca"  "aba"   "bccc"
50   "c"  "b"   "cc"  "ba"  "aa"   "bba"  "aab"   "bbca"
51   "b"  "a"   "ca"  "ac"  "cbb"  "bba"  "aab"   "bbca"
52   "b"  "a"   "ca"  "ac"  "cbb"  "acb"  "ccbc"  "abbb"
53   "b"  "a"   "bc"  "ac"  "cba"  "acb"  "cabb"  "abbb"
54   "b"  "cc"  "bb"  "ab"  "cac"  "aba"  "caaa"  "aaaa"
55   ];
56 kref = [
57    4  44  12  27  30  43  29  23
58   46  47  36  10  39   8  28  19
59   11  18   7   2   5  42  37  21
60   15  22  45   9  16  35  31  24
61   25  26  33  40   6  41  17  34
62   38   1  20  13  32  14  48   3
63   ];
64 assert_checkequal(r, ref);
65 assert_checkequal(k, kref);
66
67 // "r" and "c" multilevel sorting
68 // ------------------------------
69 [r, k] = gsort(t, "c", ["i" "i"], list(length,:));
70 ref = [
71   "b"  "ab"  "ca"   "cc"   "aab"  "bca"  "bbca"  "ccbc"
72   "a"  "b"   "b"    "ac"   "bb"   "aba"  "bba"   "cac"
73   "b"  "aa"  "ac"   "bb"   "bc"   "ca"   "aaaa"  "bbca"
74   "a"  "c"   "c"    "ac"   "ba"   "aab"  "cbb"   "abbb"
75   "b"  "b"   "aba"  "acb"  "acb"  "cbb"  "bccc"  "cabb"
76   "a"  "ab"  "cc"   "cc"   "bba"  "cba"  "abbb"  "caaa"
77   ];
78 kref = [
79   5  3  2  1  7  8  4  6
80   5  7  8  1  4  3  2  6
81   3  7  2  5  6  8  1  4
82   4  1  8  7  2  5  3  6
83   2  8  5  6  7  1  4  3
84   3  5  2  6  7  1  4  8
85   ];
86 assert_checkequal(r, ref);
87 assert_checkequal(k, kref);
88 //
89 [r, k] = gsort(t, "c", ["d" "i"], list(length,:));
90 ref = [
91   "bbca"  "ccbc"  "aab"  "bca"  "ab"   "ca"   "cc"  "b"
92   "aba"   "bba"   "cac"  "ac"   "bb"   "a"    "b"   "b"
93   "aaaa"  "bbca"  "aa"   "ac"   "bb"   "bc"   "ca"  "b"
94   "abbb"  "aab"   "cbb"  "ac"   "ba"   "a"    "c"   "c"
95   "bccc"  "cabb"  "aba"  "acb"  "acb"  "cbb"  "b"   "b"
96   "abbb"  "caaa"  "bba"  "cba"  "ab"   "cc"   "cc"  "a"
97   ];
98 kref = [
99   4  6  7  8  3  2  1  5
100   3  2  6  1  4  5  7  8
101   1  4  7  2  5  6  8  3
102   6  5  3  7  2  4  1  8
103   4  3  5  6  7  1  2  8
104   4  8  7  1  5  2  6  3
105   ];
106 assert_checkequal(r, ref);
107 assert_checkequal(k, kref);
108 //
109 [r, k] = gsort(t, "r", ["i" "i"], list(length,:));
110 ref = [
111   "c"     "b"    "a"     "a"     "a"    "bc"    "b"    "b"
112   "ac"    "ac"   "b"     "bb"    "b"    "cc"    "aa"   "b"
113   "cc"    "ba"   "ab"    "abbb"  "ab"   "acb"   "ac"   "c"
114   "cba"   "ca"   "aba"   "bbca"  "bb"   "cac"   "aab"  "ca"
115   "cbb"   "cc"   "cbb"   "bbca"  "aab"  "abbb"  "acb"  "bca"
116   "aaaa"  "bba"  "cabb"  "bccc"  "aba"  "ccbc"  "bba"  "caaa"
117   ];
118 kref = [
119   4  5  6  4  2  3  2  2
120   2  3  3  2  1  6  3  5
121   1  4  1  6  6  5  4  4
122   6  1  2  1  3  2  1  3
123   5  6  4  3  4  4  5  1
124   3  2  5  5  5  1  6  6
125   ];
126 assert_checkequal(r, ref);
127 assert_checkequal(k, kref);
128 //
129 [r, k] = gsort(t, "r", ["d" "i"], list(length,:));
130 ref = [
131   "aaaa"  "bba"  "cabb"  "abbb"  "aab"  "abbb"  "aab"  "caaa"
132   "cba"   "ac"   "aba"   "bbca"  "aba"  "ccbc"  "acb"  "bca"
133   "cbb"   "ba"   "cbb"   "bbca"  "ab"   "acb"   "bba"  "ca"
134   "ac"    "ca"   "ab"    "bccc"  "bb"   "cac"   "aa"   "b"
135   "cc"    "cc"   "a"     "bb"    "a"    "bc"    "ac"   "b"
136   "c"     "b"    "b"     "a"     "b"    "cc"    "b"    "c"
137   ];
138 kref = [
139   3  2  5  6  4  4  1  6
140   6  3  2  1  5  1  5  1
141   5  4  4  3  6  5  6  3
142   2  1  1  5  3  2  3  2
143   1  6  6  2  2  3  4  5
144   4  5  3  4  1  6  2  4
145   ];
146 assert_checkequal(r, ref);
147 assert_checkequal(k, kref);
148
149 // Lexicographic multilevel sorting
150 // --------------------------------
151 t = [
152   "aa"  "bb"  "b"   "aa"  "b"   "b"   "bb"  "bb"
153   "b"   "b"   "b"   "aa"  "a"   "a"   "ab"  "a"
154   "bb"  "b"   "bb"  "b"   "a"   "b"   "ba"  "b"
155   "b"   "b"   "ba"  "a"   "b"   "b"   "ba"  "bb"
156   "ba"  "aa"  "ba"  "ba"  "ba"  "ab"  "a"   "aa"
157   "b"   "a"   "bb"  "a"   "aa"  "b"   "ab"  "b"
158   "b"   "ab"  "aa"  "ba"  "ab"  "b"   "a"   "ba"
159   "b"   "aa"  "bb"  "aa"  "bb"  "a"   "bb"  "a"
160     ];
161 [r, k] = gsort(t, "lr", ["i" "i"], list(length,:));
162 ref = [
163   "b"   "a"   "bb"  "a"   "aa"  "b"   "ab"  "b"
164   "b"   "b"   "b"   "aa"  "a"   "a"   "ab"  "a"
165   "b"   "b"   "ba"  "a"   "b"   "b"   "ba"  "bb"
166   "b"   "aa"  "bb"  "aa"  "bb"  "a"   "bb"  "a"
167   "b"   "ab"  "aa"  "ba"  "ab"  "b"   "a"   "ba"
168   "aa"  "bb"  "b"   "aa"  "b"   "b"   "bb"  "bb"
169   "ba"  "aa"  "ba"  "ba"  "ba"  "ab"  "a"   "aa"
170   "bb"  "b"   "bb"  "b"   "a"   "b"   "ba"  "b"
171   ];
172 assert_checkequal(r, ref);
173 assert_checkequal(k', [6  2  4  8  7  1  5  3]);
174
175 //
176 [r, k] = gsort(t, "lr", ["d" "i"], list(length,:));
177 ref = [
178   "aa"  "bb"  "b"   "aa"  "b"   "b"   "bb"  "bb"
179   "ba"  "aa"  "ba"  "ba"  "ba"  "ab"  "a"   "aa"
180   "bb"  "b"   "bb"  "b"   "a"   "b"   "ba"  "b"
181   "b"   "aa"  "bb"  "aa"  "bb"  "a"   "bb"  "a"
182   "b"   "ab"  "aa"  "ba"  "ab"  "b"   "a"   "ba"
183   "b"   "a"   "bb"  "a"   "aa"  "b"   "ab"  "b"
184   "b"   "b"   "ba"  "a"   "b"   "b"   "ba"  "bb"
185   "b"   "b"   "b"   "aa"  "a"   "a"   "ab"  "a"
186   ];
187 assert_checkequal(r, ref);
188 assert_checkequal(k', [1  5  3  8  7  6  4  2]);
189 //
190 [r, k] = gsort(t, "lc", ["i" "i"], list(length,:));
191 ref = [
192   "b"   "b"   "b"   "aa"  "aa"  "bb"  "bb"  "bb"
193   "a"   "a"   "b"   "b"   "aa"  "a"   "b"   "ab"
194   "a"   "b"   "bb"  "bb"  "b"   "b"   "b"   "ba"
195   "b"   "b"   "ba"  "b"   "a"   "bb"  "b"   "ba"
196   "ba"  "ab"  "ba"  "ba"  "ba"  "aa"  "aa"  "a"
197   "aa"  "b"   "bb"  "b"   "a"   "b"   "a"   "ab"
198   "ab"  "b"   "aa"  "b"   "ba"  "ba"  "ab"  "a"
199   "bb"  "a"   "bb"  "b"   "aa"  "a"   "aa"  "bb"
200   ];
201 assert_checkequal(r, ref);
202 assert_checkequal(k, [5  6  3  1  4  8  2  7]);
203 //
204 [r, k] = gsort(t, "lc", ["d" "i"], list(length,:));
205 ref = [
206   "aa"  "aa"  "bb"  "bb"  "bb"  "b"   "b"   "b"
207   "aa"  "b"   "ab"  "a"   "b"   "a"   "a"   "b"
208   "b"   "bb"  "ba"  "b"   "b"   "a"   "b"   "bb"
209   "a"   "b"   "ba"  "bb"  "b"   "b"   "b"   "ba"
210   "ba"  "ba"  "a"   "aa"  "aa"  "ba"  "ab"  "ba"
211   "a"   "b"   "ab"  "b"   "a"   "aa"  "b"   "bb"
212   "ba"  "b"   "a"   "ba"  "ab"  "ab"  "b"   "aa"
213   "aa"  "b"   "bb"  "a"   "aa"  "bb"  "a"   "bb"
214   ];
215 assert_checkequal(r, ref);
216 assert_checkequal(k, [4  1  7  8  2  5  6  3]);