rm duplicate test after fced82 & 56cd2
[scilab.git] / scilab / modules / ast / tests / unit_tests / parser.tst
1 // ============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2016 - DIGITEO - Cedric Delamarre
4 // Copyright (C) 2016 - Scilab Enterprises - Pierre-Aime Agnel
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // ============================================================================
8
9 // <-- CLI SHELL MODE -->
10 // <-- NO CHECK REF -->
11
12
13 // line break
14 colvect(1,1) = 1;
15 colvect(2,1) = -2;
16 linevect = colvect';
17
18
19 a=[1; ...
20 -2];
21 assert_checkequal(a,  colvect);
22 a=[1;...
23 -2];
24 assert_checkequal(a,  colvect);
25 a=[1; ...
26  -2];
27 assert_checkequal(a,  colvect);
28 a=[1;...
29  -2];
30 assert_checkequal(a,  colvect);
31 a=[1; ...
32 - 2];
33 assert_checkequal(a,  colvect);
34 a=[1;...
35 - 2];
36 assert_checkequal(a,  colvect);
37
38 a=[1 ...
39 -2];
40 assert_checkequal(a,  linevect);
41 a=[1...
42 -2];
43 assert_checkequal(a,  -1);
44 a=[1 ...
45  -2];
46 assert_checkequal(a,  linevect);
47 a=[1...
48  -2];
49 assert_checkequal(a,  linevect);
50 a=[1 ...
51 - 2];
52 assert_checkequal(a,  -1);
53 a=[1...
54 - 2];
55 assert_checkequal(a,  -1);
56
57 a=[1; ...//comment
58 -2];
59 assert_checkequal(a,  colvect);
60 a=[1;...//comment
61 -2];
62 assert_checkequal(a,  colvect);
63 a=[1; ...//comment
64  -2];
65 assert_checkequal(a,  colvect);
66 a=[1;...//comment
67  -2];
68 assert_checkequal(a,  colvect);
69 a=[1; ...//comment
70 - 2];
71 assert_checkequal(a,  colvect);
72 a=[1;...//comment
73 - 2];
74 assert_checkequal(a,  colvect);
75
76 a=[1 ...//comment
77 -2];
78 assert_checkequal(a,  linevect);
79 a=[1...//comment
80 -2];
81 assert_checkequal(a,  -1);
82 a=[1 ...//comment
83  -2];
84 assert_checkequal(a,  linevect);
85 a=[1...//comment
86  -2];
87 assert_checkequal(a,  linevect);
88 a=[1 ...//comment
89 - 2];
90 assert_checkequal(a,  -1);
91 a=[1...//comment
92 - 2];
93 assert_checkequal(a,  -1);
94
95 a=[1 ...
96 -2 ];
97 assert_checkequal(a,  linevect);
98 a=[1...
99 -2 ];
100 assert_checkequal(a,  -1);
101 a=[1 ...
102  -2 ];
103 assert_checkequal(a,  linevect);
104 a=[1...
105  -2 ];
106 assert_checkequal(a,  linevect);
107 a=[1 ...
108 - 2 ];
109 assert_checkequal(a,  -1);
110 a=[1...
111 - 2 ];
112 assert_checkequal(a,  -1);
113
114 // Operators within matrices
115 // DOTTIMES
116 a = [[2 3] .* -3];
117 expected = [-6 -9];
118 assert_checkequal(a, expected);
119
120 a = [[2 3] .* ...
121 -3];
122 assert_checkequal(a, expected);
123
124 a = [[2 3] .* ... // a comment
125 -3];
126 assert_checkequal(a, expected);
127
128 //DOTRDIVIDE
129 a = [[2 3] ./ -3];
130 expected = [-2/3 -1];
131 assert_checkequal(a, expected);
132
133 a = [[2 3] ./ ...
134 -3];
135 assert_checkequal(a, expected);
136
137 a = [[2 3] ./ ... // a comment
138 -3];
139 assert_checkequal(a, expected);
140
141 //DOTLDIVIDE
142 a = [[2 3] .\ -3];
143 expected = [-3/2 -1];
144 assert_checkequal(a, expected);
145
146 a = [[2 3] .\ ...
147 -3];
148 assert_checkequal(a, expected);
149
150 a = [[2 3] .\ ... // a comment
151 -3];
152 assert_checkequal(a, expected);
153
154 //DOTPOWER
155 a = [[2 3] .^ -3];
156 expected = [(2^(-3)), (3^(-3))];
157 assert_checkequal(a, expected);
158
159 a = [[2 3] .^ ...
160 -3];
161 assert_checkequal(a, expected);
162
163 a = [[2 3] .^ ... // a comment
164 -3];
165 assert_checkequal(a, expected);
166
167 //MINUS
168 a = [[2 3] - -3];
169 expected = [(2-(-3)), (3-(-3))];
170 assert_checkequal(a, expected);
171
172 a = [[2 3] - ...
173 -3];
174 assert_checkequal(a, expected);
175
176 a = [[2 3] - ... // a comment
177 -3];
178 assert_checkequal(a, expected);
179
180 //PLUS
181 a = [[2 3] + -3];
182 expected = [(2+(-3)), (3+(-3))];
183 assert_checkequal(a, expected);
184
185 a = [[2 3] + ...
186 -3];
187 assert_checkequal(a, expected);
188
189 a = [[2 3] + ... // a comment
190 -3];
191 assert_checkequal(a, expected);
192
193 //TIMES
194 a = [2 * -3];
195 expected = [(2*(-3))];
196 assert_checkequal(a, expected);
197
198 a = [2 * ...
199  -3];
200 assert_checkequal(a, expected);
201
202 a = [2  * ... // a comment
203  -3];
204 assert_checkequal(a, expected);
205
206 //RDIVIDE
207 a = [2 / -3];
208 expected = [(2/(-3))];
209 assert_checkequal(a, expected);
210
211 a = [2 / ...
212  -3];
213 assert_checkequal(a, expected);
214
215 a = [2  / ... // a comment
216  -3];
217 assert_checkequal(a, expected);
218
219 //LDIVIDE
220 a = [2 \ -3];
221 expected = [(2\(-3))];
222 assert_checkequal(a, expected);
223
224 a = [2 \ ...
225  -3];
226 assert_checkequal(a, expected);
227
228 a = [2  \ ... // a comment
229  -3];
230 assert_checkequal(a, expected);
231
232 //POWER
233 a = [2 ^ -3];
234 expected = [(2^(-3))];
235 assert_checkequal(a, expected);
236
237 a = [2 ^ ...
238  -3];
239 assert_checkequal(a, expected);
240
241 a = [2  ^ ... // a comment
242  -3];
243 assert_checkequal(a, expected);
244
245 //KRONTIMES
246 a = [[2 3] .*. -3];
247 expected = [([2, 3].*.(-3))];
248 assert_checkequal(a, expected);
249
250 a = [[2 3] .*. ...
251  -3];
252 assert_checkequal(a, expected);
253
254 a = [[2 3] .*. ... // a comment
255  -3];
256 assert_checkequal(a, expected);
257
258 //KRONRDIVIDE
259 a = [[2 3] ./. -3];
260 expected = -[2 3] / 3;
261 assert_checkequal(a, expected);
262
263 a = [[2 3] ./. ...
264  -3];
265 assert_checkequal(a, expected);
266
267 a = [[2 3] ./. ... // a comment
268  -3];
269 assert_checkequal(a, expected);
270
271 //KRONLDIVIDE
272 a = [-3 .\. [2 3]];
273 assert_checkequal(a, expected);
274
275 a = [-3 .\. ...
276  [2 3]];
277 assert_checkequal(a, expected);
278
279 a = [-3 .\. ... // a comment
280  [2 3]];
281 assert_checkequal(a, expected);
282
283 //EQ
284 a = [[2 3] == -3];
285 expected = [([2, 3]==(-3))];
286 assert_checkequal(a, expected);
287
288 a = [[2 3] == ...
289  -3];
290 assert_checkequal(a, expected);
291
292 a = [[2 3] == ... // a comment
293  -3];
294 assert_checkequal(a, expected);
295
296 //NE
297 a = [[2 3] ~= -3];
298 expected = [([2, 3]~=(-3))];
299 assert_checkequal(a, expected);
300
301 a = [[2 3] ~= ...
302  -3];
303 assert_checkequal(a, expected);
304
305 a = [[2 3]  ~= ... // a comment
306  -3];
307 assert_checkequal(a, expected);
308
309 //LT
310 a = [[2 3] < -3];
311 expected = [([2, 3]<(-3))];
312 assert_checkequal(a, expected);
313
314 a = [[2 3] < ...
315  -3];
316 assert_checkequal(a, expected);
317
318 a = [[2 3]  < ... // a comment
319  -3];
320 assert_checkequal(a, expected);
321
322 //GT
323 a = [[2 3] > -3];
324 expected = [([2, 3]>(-3))];
325 assert_checkequal(a, expected);
326
327 a = [[2 3] > ...
328  -3];
329 assert_checkequal(a, expected);
330
331 a = [[2 3]  > ... // a comment
332  -3];
333 assert_checkequal(a, expected);
334
335 //LE
336 a = [[2 3] <= -3];
337 expected = [([2, 3]<=(-3))];
338 assert_checkequal(a, expected);
339
340 a = [[2 3] <= ...
341  -3];
342 assert_checkequal(a, expected);
343
344 a = [[2 3]  <= ... // a comment
345  -3];
346 assert_checkequal(a, expected);
347
348 //GE
349 a = [[2 3] >= -3];
350 expected = [([2, 3]>=(-3))];
351 assert_checkequal(a, expected);
352
353 a = [[2 3] >= ...
354  -3];
355 assert_checkequal(a, expected);
356
357 a = [[2 3]  >= ... // a comment
358  -3];
359 assert_checkequal(a, expected);
360
361 // http://bugzilla.scilab.org/14361 :
362 // --------------------------------
363 a=[1; .../* a comment */
364 -2];
365 assert_checkequal(a,  colvect);
366 a=[1;.../* a comment */
367 -2];
368 assert_checkequal(a,  colvect);
369 a=[1; .../* a comment */
370  -2];
371 assert_checkequal(a,  colvect);
372 a=[1;.../* a comment */
373  -2];
374 assert_checkequal(a,  colvect);
375 a=[1; .../* a comment */
376 - 2];
377 assert_checkequal(a,  colvect);
378 a=[1;.../* a comment */
379 - 2];
380 assert_checkequal(a,  colvect);
381
382 a=[1 .../* a comment */
383 -2];
384 assert_checkequal(a,  linevect);
385 a=[1.../* a comment */
386 -2];
387 assert_checkequal(a,  -1);
388 a=[1 .../* a comment */
389  -2];
390 assert_checkequal(a,  linevect);
391 a=[1.../* a comment */
392  -2];
393 assert_checkequal(a,  linevect);
394 a=[1 .../* a comment */
395 - 2];
396 assert_checkequal(a,  -1);
397 a=[1.../* a comment */
398 - 2];
399 assert_checkequal(a,  -1);
400
401 // Operators within matrices
402 // DOTTIMES
403 a = [[2 3] .* ... /* a comment */
404 -3];
405 expected = [-6 -9];
406 assert_checkequal(a, expected);
407
408 //DOTRDIVIDE
409
410 a = [[2 3] ./ ... /* a comment */
411 -3];
412 expected = [-2/3 -1];
413 assert_checkequal(a, expected);
414
415 //DOTLDIVIDE
416 a = [[2 3] .\ ... /* a comment */
417 -3];
418 expected = [-3/2 -1];
419 assert_checkequal(a, expected);
420
421 //DOTPOWER
422 a = [[2 3] .^ ... /* a comment */
423 -3];
424 expected = [(2^(-3)), (3^(-3))];
425 assert_checkequal(a, expected);
426
427 //MINUS
428 a = [[2 3] - ... /* a comment */
429 -3];
430 expected = [(2-(-3)), (3-(-3))];
431 assert_checkequal(a, expected);
432
433 //PLUS
434 a = [[2 3] + ... /* a comment */
435 -3];
436 expected = [(2+(-3)), (3+(-3))];
437 assert_checkequal(a, expected);
438
439 //TIMES
440 a = [2  * ... /* a comment */
441  -3];
442 expected = [(2*(-3))];
443 assert_checkequal(a, expected);
444
445 //RDIVIDE
446 a = [2  / ... /* a comment */
447  -3];
448 expected = [(2/(-3))];
449 assert_checkequal(a, expected);
450
451 //LDIVIDE
452 a = [2  \ ... /* a comment */
453  -3];
454 expected = [(2\(-3))];
455 assert_checkequal(a, expected);
456
457 //POWER
458 a = [2  ^ ... /* a comment */
459  -3];
460 expected = [(2^(-3))];
461 assert_checkequal(a, expected);
462
463 //KRONTIMES
464 a = [[2 3] .*. ... /* a comment */
465  -3];
466 expected = [([2, 3].*.(-3))];
467 assert_checkequal(a, expected);
468
469 //kronrdivide
470 a = [[2 3] ./. ... /* a comment */
471  -3];
472 expected = [([2, 3] ./. (-3))];
473 assert_checkequal(a, expected);
474
475 //KRONLDIVIDE
476 a = [-3 .\.  ... /* a comment */
477  [2 3]];
478 assert_checkequal(a, expected);
479
480 //EQ
481 a = [[2 3] == ... /* a comment */
482  -3];
483 expected = [([2, 3]==(-3))];
484 assert_checkequal(a, expected);
485
486 //NE
487 a = [[2 3]  ~= ... /* a comment */
488  -3];
489 expected = [([2, 3]~=(-3))];
490 assert_checkequal(a, expected);
491
492 //LT
493 a = [[2 3]  < ... /* a comment */
494  -3];
495 expected = [([2, 3]<(-3))];
496 assert_checkequal(a, expected);
497
498 //GT
499 a = [[2 3]  > ... /* a comment */
500  -3];
501 expected = [([2, 3]>(-3))];
502 assert_checkequal(a, expected);
503
504 //LE
505 a = [[2 3]  <= ... /* a comment */
506  -3];
507 expected = [([2, 3]<=(-3))];
508 assert_checkequal(a, expected);
509
510 //GE
511 a = [[2 3]  >= ... /* a comment */
512  -3];
513 expected = [([2, 3]>=(-3))];
514 assert_checkequal(a, expected);
515
516 // Comments on several lines
517 a=[1; .../* a comment 
518  on several lines */
519 -2];
520 assert_checkequal(a,  colvect);
521 a=[1;.../* a comment 
522  on several lines */
523 -2];
524 assert_checkequal(a,  colvect);
525 a=[1; .../* a comment 
526  on several lines */
527  -2];
528 assert_checkequal(a,  colvect);
529 a=[1;.../* a comment 
530  on several lines */
531  -2];
532 assert_checkequal(a,  colvect);
533 a=[1; .../* a comment 
534  on several lines */
535 - 2];
536 assert_checkequal(a,  colvect);
537 a=[1;.../* a comment 
538  on several lines */
539 - 2];
540 assert_checkequal(a,  colvect);
541
542 a=[1 .../* a comment 
543  on several lines */
544 -2];
545 assert_checkequal(a,  linevect);
546 a=[1.../* a comment 
547  on several lines */
548 -2];
549 assert_checkequal(a,  -1);
550 a=[1 .../* a comment 
551  on several lines */
552  -2];
553 assert_checkequal(a,  linevect);
554 a=[1.../* a comment 
555  on several lines */
556  -2];
557 assert_checkequal(a,  linevect);
558 a=[1 .../* a comment 
559  on several lines */
560 - 2];
561 assert_checkequal(a,  -1);
562 a=[1.../* a comment 
563  on several lines */
564 - 2];
565 assert_checkequal(a,  -1);
566
567 // Operators within matrices
568 // DOTTIMES
569 a = [[2 3] .* ... /* a comment 
570  on several lines */
571 -3];
572 expected = [-6 -9];
573 assert_checkequal(a, expected);
574
575 //DOTRDIVIDE
576 a = [[2 3] ./ ... /* a comment 
577  on several lines */
578 -3];
579 expected = [-2/3 -1];
580 assert_checkequal(a, expected);
581
582 //DOTLDIVIDE
583 a = [[2 3] .\ ... /* a comment 
584  on several lines */
585 -3];
586 expected = [-3/2 -1];
587 assert_checkequal(a, expected);
588
589 //DOTPOWER
590 a = [[2 3] .^ ... /* a comment 
591  on several lines */
592 -3];
593 expected = [(2^(-3)), (3^(-3))];
594 assert_checkequal(a, expected);
595
596 //MINUS
597 a = [[2 3] - ... /* a comment 
598  on several lines */
599 -3];
600 expected = [(2-(-3)), (3-(-3))];
601 assert_checkequal(a, expected);
602
603 //PLUS
604 a = [[2 3] + ... /* a comment 
605  on several lines */
606 -3];
607 expected = [(2+(-3)), (3+(-3))];
608 assert_checkequal(a, expected);
609
610 //TIMES
611 a = [2  * ... /* a comment 
612  on several lines */
613  -3];
614 expected = [(2*(-3))];
615 assert_checkequal(a, expected);
616
617 //RDIVIDE
618 a = [2  / ... /* a comment 
619  on several lines */
620  -3];
621 expected = [(2/(-3))];
622 assert_checkequal(a, expected);
623
624 //LDIVIDE
625 a = [2  \ ... /* a comment 
626  on several lines */
627  -3];
628 expected = [(2\(-3))];
629 assert_checkequal(a, expected);
630
631 //POWER
632 a = [2  ^ ... /* a comment 
633  on several lines */
634  -3];
635 expected = [(2^(-3))];
636 assert_checkequal(a, expected);
637
638 //KRONTIMES
639 a = [[2 3] .*. ... /* a comment 
640  on several lines */
641  -3];
642 expected = [([2, 3].*.(-3))];
643 assert_checkequal(a, expected);
644
645 //KRONRDIVIDE
646 a = [[2 3] ./. ... /* a comment 
647  on several lines */
648  -3];
649 expected = [([2, 3]./.(-3))];
650 assert_checkequal(a, expected);
651
652 //KRONLDIVIDE
653 a = [ -3 .\. ... /* a comment 
654  on several lines */
655  [2 3] ];
656 assert_checkequal(a, expected);
657
658 //EQ
659 a = [[2 3] == ... /* a comment 
660  on several lines */
661  -3];
662 expected = [([2, 3]==(-3))];
663 assert_checkequal(a, expected);
664
665 //NE
666 a = [[2 3]  ~= ... /* a comment 
667  on several lines */
668  -3];
669 expected = [([2, 3]~=(-3))];
670 assert_checkequal(a, expected);
671
672 //LT
673 a = [[2 3]  < ... /* a comment 
674  on several lines */
675  -3];
676 expected = [([2, 3]<(-3))];
677 assert_checkequal(a, expected);
678
679 //GT
680 a = [[2 3]  > ... /* a comment 
681  on several lines */
682  -3];
683 expected = [([2, 3]>(-3))];
684 assert_checkequal(a, expected);
685
686 //LE
687 a = [[2 3]  <= ... /* a comment 
688  on several lines */
689  -3];
690 expected = [([2, 3]<=(-3))];
691 assert_checkequal(a, expected);
692
693 //GE
694 a = [[2 3]  >= ... /* a comment 
695  on several lines */
696  -3];
697 expected = [([2, 3]>=(-3))];
698 assert_checkequal(a, expected);
699
700 // Special behaviour of ... with + and -
701 a = [1 +...
702 2]
703 expected = 3;
704 assert_checkequal(a, expected);
705
706 a = [1 +...
707  2]
708 expected = 3;
709 assert_checkequal(a, expected);
710
711 a = [1 +...
712  +2]
713 expected = 3;
714 assert_checkequal(a, expected);
715
716 a = [1 -...
717 2]
718 expected = -1;
719 assert_checkequal(a, expected);
720
721 a = [1 -...
722  2]
723 expected = -1;
724 assert_checkequal(a, expected);
725
726 a = [1 -...
727  -2]
728 expected = 3;
729 assert_checkequal(a, expected);
730
731 // Case with multiline comment
732 str_cmd = ["a = [1 -... /* the start of a";
733           "multiline comment */ 2 3]"]; // this currently generates an error
734 assert_checktrue(execstr(str_cmd, "errcatch") <> 0);
735
736 // --------------------------------------------
737
738 // bug_14374 comments in SHELLMODE
739 // Testing if shellmode execution with command
740 // convstr a u // a comment
741 // convstr a /* a comment */
742 // convstr a u /* some text
743 //                ending comment here */
744 exec(SCI + "/modules/ast/tests/nonreg_tests/bug_14374.tst");
745
746 // Bug 7646: matrix transpose extraction
747 exec(SCI + "/modules/ast/tests/nonreg_tests/bug_7646.tst");
748
749 // Bug 14662: matrix concatenation with simple quote and space led to a parser error
750 exec(SCI + "/modules/ast/tests/nonreg_tests/bug_14662.tst");
751
752 // Bug 14667: multi line string in matrix generated a non terminal parser state
753 exec(SCI + "/modules/ast/tests/nonreg_tests/bug_14667.tst");