[doc] Misc. small improvements
[scilab.git] / scilab / modules / ast / tests / nonreg_tests / bug_14361.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2016 - Scilab Enterprises - Pierre-Aime Agnel
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- CLI SHELL MODE -->
8 //
9 // <-- Non-regression test for bug 14361 -->
10 //
11 // <-- Bugzilla URL -->
12 // http://bugzilla.scilab.org/14361
13 //
14 // <-- Short Description -->
15 // Parser did not manage comments after line continuation ... in matrix environnement
16
17 // bug_14361
18 colvect(1,1) = 1;
19 colvect(2,1) = -2;
20 linevect = colvect';
21
22 a=[1; .../* a comment */
23 -2];
24 assert_checkequal(a,  colvect);
25 a=[1;.../* a comment */
26 -2];
27 assert_checkequal(a,  colvect);
28 a=[1; .../* a comment */
29  -2];
30 assert_checkequal(a,  colvect);
31 a=[1;.../* a comment */
32  -2];
33 assert_checkequal(a,  colvect);
34 a=[1; .../* a comment */
35 - 2];
36 assert_checkequal(a,  colvect);
37 a=[1;.../* a comment */
38 - 2];
39 assert_checkequal(a,  colvect);
40
41 a=[1 .../* a comment */
42 -2];
43 assert_checkequal(a,  linevect);
44 a=[1.../* a comment */
45 -2];
46 assert_checkequal(a,  -1);
47 a=[1 .../* a comment */
48  -2];
49 assert_checkequal(a,  linevect);
50 a=[1.../* a comment */
51  -2];
52 assert_checkequal(a,  linevect);
53 a=[1 .../* a comment */
54 - 2];
55 assert_checkequal(a,  -1);
56 a=[1.../* a comment */
57 - 2];
58 assert_checkequal(a,  -1);
59
60 // Operators within matrices
61 // DOTTIMES
62 a = [[2 3] .* ... /* a comment */
63 -3];
64 expected = [-6 -9];
65 assert_checkequal(a, expected);
66
67 //DOTRDIVIDE
68
69 a = [[2 3] ./ ... /* a comment */
70 -3];
71 expected = [-2/3 -1];
72 assert_checkequal(a, expected);
73
74 //DOTLDIVIDE
75 a = [[2 3] .\ ... /* a comment */
76 -3];
77 expected = [-3/2 -1];
78 assert_checkequal(a, expected);
79
80 //DOTPOWER
81 a = [[2 3] .^ ... /* a comment */
82 -3];
83 expected = [(2^(-3)), (3^(-3))];
84 assert_checkequal(a, expected);
85
86 //MINUS
87 a = [[2 3] - ... /* a comment */
88 -3];
89 expected = [(2-(-3)), (3-(-3))];
90 assert_checkequal(a, expected);
91
92 //PLUS
93 a = [[2 3] + ... /* a comment */
94 -3];
95 expected = [(2+(-3)), (3+(-3))];
96 assert_checkequal(a, expected);
97
98 //TIMES
99 a = [2  * ... /* a comment */
100  -3];
101 expected = [(2*(-3))];
102 assert_checkequal(a, expected);
103
104 //RDIVIDE
105 a = [2  / ... /* a comment */
106  -3];
107 expected = [(2/(-3))];
108 assert_checkequal(a, expected);
109
110 //LDIVIDE
111 a = [2  \ ... /* a comment */
112  -3];
113 expected = [(2\(-3))];
114 assert_checkequal(a, expected);
115
116 //POWER
117 a = [2  ^ ... /* a comment */
118  -3];
119 expected = [(2^(-3))];
120 assert_checkequal(a, expected);
121
122 //KRONTIMES
123 a = [[2 3] .*. ... /* a comment */
124  -3];
125 expected = [([2, 3].*.(-3))];
126 assert_checkequal(a, expected);
127
128 //kronrdivide
129 a = [[2 3] ./. ... /* a comment */
130  -3];
131 expected = [([2, 3]./.(-3))];
132 assert_checkequal(a, expected);
133
134 //KRONLDIVIDE
135 a = [[2 3] .\. ... /* a comment */
136  -3];
137 expected = [([2, 3].\.(-3))];
138 assert_checkequal(a, expected);
139
140 //EQ
141 a = [[2 3] == ... /* a comment */
142  -3];
143 expected = [([2, 3]==(-3))];
144 assert_checkequal(a, expected);
145
146 //NE
147 a = [[2 3]  ~= ... /* a comment */
148  -3];
149 expected = [([2, 3]~=(-3))];
150 assert_checkequal(a, expected);
151
152 //LT
153 a = [[2 3]  < ... /* a comment */
154  -3];
155 expected = [([2, 3]<(-3))];
156 assert_checkequal(a, expected);
157
158 //GT
159 a = [[2 3]  > ... /* a comment */
160  -3];
161 expected = [([2, 3]>(-3))];
162 assert_checkequal(a, expected);
163
164 //LE
165 a = [[2 3]  <= ... /* a comment */
166  -3];
167 expected = [([2, 3]<=(-3))];
168 assert_checkequal(a, expected);
169
170 //GE
171 a = [[2 3]  >= ... /* a comment */
172  -3];
173 expected = [([2, 3]>=(-3))];
174 assert_checkequal(a, expected);
175
176 // Comments on several lines
177 a=[1; .../* a comment 
178  on several lines */
179 -2];
180 assert_checkequal(a,  colvect);
181 a=[1;.../* a comment 
182  on several lines */
183 -2];
184 assert_checkequal(a,  colvect);
185 a=[1; .../* a comment 
186  on several lines */
187  -2];
188 assert_checkequal(a,  colvect);
189 a=[1;.../* a comment 
190  on several lines */
191  -2];
192 assert_checkequal(a,  colvect);
193 a=[1; .../* a comment 
194  on several lines */
195 - 2];
196 assert_checkequal(a,  colvect);
197 a=[1;.../* a comment 
198  on several lines */
199 - 2];
200 assert_checkequal(a,  colvect);
201
202 a=[1 .../* a comment 
203  on several lines */
204 -2];
205 assert_checkequal(a,  linevect);
206 a=[1.../* a comment 
207  on several lines */
208 -2];
209 assert_checkequal(a,  -1);
210 a=[1 .../* a comment 
211  on several lines */
212  -2];
213 assert_checkequal(a,  linevect);
214 a=[1.../* a comment 
215  on several lines */
216  -2];
217 assert_checkequal(a,  linevect);
218 a=[1 .../* a comment 
219  on several lines */
220 - 2];
221 assert_checkequal(a,  -1);
222 a=[1.../* a comment 
223  on several lines */
224 - 2];
225 assert_checkequal(a,  -1);
226
227 // Operators within matrices
228 // DOTTIMES
229 a = [[2 3] .* ... /* a comment 
230  on several lines */
231 -3];
232 expected = [-6 -9];
233 assert_checkequal(a, expected);
234
235 //DOTRDIVIDE
236 a = [[2 3] ./ ... /* a comment 
237  on several lines */
238 -3];
239 expected = [-2/3 -1];
240 assert_checkequal(a, expected);
241
242 //DOTLDIVIDE
243 a = [[2 3] .\ ... /* a comment 
244  on several lines */
245 -3];
246 expected = [-3/2 -1];
247 assert_checkequal(a, expected);
248
249 //DOTPOWER
250 a = [[2 3] .^ ... /* a comment 
251  on several lines */
252 -3];
253 expected = [(2^(-3)), (3^(-3))];
254 assert_checkequal(a, expected);
255
256 //MINUS
257 a = [[2 3] - ... /* a comment 
258  on several lines */
259 -3];
260 expected = [(2-(-3)), (3-(-3))];
261 assert_checkequal(a, expected);
262
263 //PLUS
264 a = [[2 3] + ... /* a comment 
265  on several lines */
266 -3];
267 expected = [(2+(-3)), (3+(-3))];
268 assert_checkequal(a, expected);
269
270 //TIMES
271 a = [2  * ... /* a comment 
272  on several lines */
273  -3];
274 expected = [(2*(-3))];
275 assert_checkequal(a, expected);
276
277 //RDIVIDE
278 a = [2  / ... /* a comment 
279  on several lines */
280  -3];
281 expected = [(2/(-3))];
282 assert_checkequal(a, expected);
283
284 //LDIVIDE
285 a = [2  \ ... /* a comment 
286  on several lines */
287  -3];
288 expected = [(2\(-3))];
289 assert_checkequal(a, expected);
290
291 //POWER
292 a = [2  ^ ... /* a comment 
293  on several lines */
294  -3];
295 expected = [(2^(-3))];
296 assert_checkequal(a, expected);
297
298 //KRONTIMES
299 a = [[2 3] .*. ... /* a comment 
300  on several lines */
301  -3];
302 expected = [([2, 3].*.(-3))];
303 assert_checkequal(a, expected);
304
305 //KRONRDIVIDE
306 a = [[2 3] ./. ... /* a comment 
307  on several lines */
308  -3];
309 expected = [([2, 3]./.(-3))];
310 assert_checkequal(a, expected);
311
312 //KRONLDIVIDE
313 a = [[2 3] .\. ... /* a comment 
314  on several lines */
315  -3];
316 expected = [([2, 3].\.(-3))];
317 assert_checkequal(a, expected);
318
319 //EQ
320 a = [[2 3] == ... /* a comment 
321  on several lines */
322  -3];
323 expected = [([2, 3]==(-3))];
324 assert_checkequal(a, expected);
325
326 //NE
327 a = [[2 3]  ~= ... /* a comment 
328  on several lines */
329  -3];
330 expected = [([2, 3]~=(-3))];
331 assert_checkequal(a, expected);
332
333 //LT
334 a = [[2 3]  < ... /* a comment 
335  on several lines */
336  -3];
337 expected = [([2, 3]<(-3))];
338 assert_checkequal(a, expected);
339
340 //GT
341 a = [[2 3]  > ... /* a comment 
342  on several lines */
343  -3];
344 expected = [([2, 3]>(-3))];
345 assert_checkequal(a, expected);
346
347 //LE
348 a = [[2 3]  <= ... /* a comment 
349  on several lines */
350  -3];
351 expected = [([2, 3]<=(-3))];
352 assert_checkequal(a, expected);
353
354 //GE
355 a = [[2 3]  >= ... /* a comment 
356  on several lines */
357  -3];
358 expected = [([2, 3]>=(-3))];
359 assert_checkequal(a, expected);
360
361 // Special behaviour of ... with + and -
362 a = [1 +...
363 2]
364 expected = 3;
365 assert_checkequal(a, expected);
366
367 a = [1 +...
368  2]
369 expected = 3;
370 assert_checkequal(a, expected);
371
372 a = [1 +...
373  +2]
374 expected = 3;
375 assert_checkequal(a, expected);
376
377 a = [1 -...
378 2]
379 expected = -1;
380 assert_checkequal(a, expected);
381
382 a = [1 -...
383  2]
384 expected = -1;
385 assert_checkequal(a, expected);
386
387 a = [1 -...
388  -2]
389 expected = 3;
390 assert_checkequal(a, expected);
391
392 // Case with multiline comment
393 str_cmd = ["a = [1 -... /* the start of a";
394           "multiline comment */ 2 3]"]; // this currently generates an error
395 assert_checktrue(execstr(str_cmd, "errcatch") <> 0);