5d76a3cb9bbb827a2e7c4730b9ac3aefb36946e0
[scilab.git] / scilab / modules / ast / tests / unit_tests / implicitlist.tst
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2013 - Scilab Enterprises - Cedric Delamarre
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9 //
10 //
11
12 // <-- CLI SHELL MODE -->
13
14 function checkCallOverload(mat)
15     assert_checkerror(mat, [], 999);
16 endfunction
17
18 // normal cases
19 assert_checkequal(1:3, [1 2 3]);
20 assert_checkequal(1:1:3, [1 2 3]);
21 assert_checkequal(1:2:3, [1 3]);
22
23 assert_checkequal(3:-1:1, [3 2 1]);
24 assert_checkequal(3:-2:1, [3 1]);
25
26 assert_checkequal(3:1, []);
27 assert_checkequal(3:2:1, []);
28 assert_checkequal(1:0:3, []);
29
30 // no finite cases
31 assert_checkequal(1:%inf, %nan);
32 assert_checkequal(1:%nan, %nan);
33 assert_checkequal(1:-%inf, []);
34 assert_checkequal(1:%inf:10, %nan);
35 assert_checkequal(1:%nan:10, %nan);
36 assert_checkequal(1:-%inf:10, []);
37
38 assert_checkequal(%inf:1, []);
39 assert_checkequal(%nan:1, %nan);
40 assert_checkequal(-%inf:1, %nan);
41 assert_checkequal(10:%inf:1, []);
42 assert_checkequal(10:%nan:1, %nan);
43 assert_checkequal(10:-%inf:1, %nan);
44
45 // int
46 i1 = int8(1);
47 i2 = int8(2);
48 i8 = int8(8);
49
50 assert_checkequal(i1:i2:i8, int8([1,3,5,7]));
51 checkCallOverload("i1:i2:8");
52 assert_checkequal(i1:2:i8,  int8([1,3,5,7]));
53 assert_checkequal(i1:2:8,   int8([1,3,5,7]));
54 assert_checkequal(1:i2:i8,  int8([1,3,5,7]));
55 assert_checkequal(1:i2:8,   int8([1,3,5,7]));
56 assert_checkequal(1:2:i8,   int8([1,3,5,7]));
57 assert_checkequal(1:2:8,    [1,3,5,7]);
58
59 assert_checkequal(i1:i8, int8(1:8));
60 assert_checkequal(i1:8,  int8(1:8));
61 assert_checkequal(1:i8,  int8(1:8));
62 assert_checkequal(1:8,   [1 2 3 4 5 6 7 8]);
63
64 ii1 = int16(1);
65 ii2 = int16(2);
66 ii8 = int16(8);
67
68 assert_checkequal(i1:i2:i8, int8([1,3,5,7]));
69 checkCallOverload("i1:i2:ii8");
70 checkCallOverload("i1:ii2:i8");
71 checkCallOverload("i1:ii2:ii8");
72 checkCallOverload("ii1:i2:i8");
73 checkCallOverload("ii1:i2:ii8");
74 checkCallOverload("ii1:ii2:i8");
75 assert_checkequal(ii1:ii2:ii8, int16([1,3,5,7]));
76
77 // bool
78 t = %t;
79 checkCallOverload("t:t:t");
80 checkCallOverload("t:t:8");
81 checkCallOverload("t:2:%t");
82 checkCallOverload("t:2:8");
83 checkCallOverload("1:t:%t");
84 checkCallOverload("1:t:8");
85 assert_checkerror("1:2:t", [], 10000);
86
87 // poly
88 assert_checktrue(execstr("$:$:$", "errcatch") == 0);
89 assert_checktrue(execstr("$:$:8", "errcatch") == 0);
90 assert_checktrue(execstr("$:2:$", "errcatch") == 0);
91 assert_checktrue(execstr("$:2:8", "errcatch") == 0);
92 assert_checktrue(execstr("1:$:$", "errcatch") == 0);
93 assert_checktrue(execstr("1:$:8", "errcatch") == 0);
94 assert_checktrue(execstr("1:2:$", "errcatch") == 0);
95 assert_checktrue(execstr("1:2:8", "errcatch") == 0);
96
97 assert_checktrue(execstr("$:$", "errcatch") == 0);
98 assert_checktrue(execstr("$:8", "errcatch") == 0);
99 assert_checktrue(execstr("2:$", "errcatch") == 0);
100 assert_checktrue(execstr("2:8", "errcatch") == 0);
101
102 // rational
103 t = 1/%s;
104 checkCallOverload("t:t:t");
105 checkCallOverload("t:t:8");
106 checkCallOverload("t:2:%t");
107 checkCallOverload("t:2:8");
108 checkCallOverload("1:t:%t");
109 checkCallOverload("1:t:8");
110 assert_checkerror("1:2:t", [], 10000);
111
112 // rational
113 t = list();
114 checkCallOverload("t:t:t");
115 checkCallOverload("t:t:8");
116 checkCallOverload("t:2:%t");
117 checkCallOverload("t:2:8");
118 checkCallOverload("1:t:%t");
119 checkCallOverload("1:t:8");
120 assert_checkerror("1:2:t", [], 10000);
121
122 // extraction
123 assert_checkerror("vect=1:3;vect(1:4)", gettext("Invalid index."));
124 assert_checkerror("vect=1:3;vect(4:-1:1)", gettext("Invalid index."));
125
126