[bug_1469] test fixed
[scilab.git] / scilab / modules / functions / tests / nonreg_tests / bug_1469.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2006-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 // <-- ENGLISH IMPOSED -->
10 //
11 // <-- Non-regression test for bug 1469 -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/show_bug.cgi?id=1469
15 //
16 // <-- Short Description -->
17 //    Comments modify line numbering in functions
18 //
19 //    What you don't believe?
20 //
21 //    Try this:
22 //
23 //    1st test, no comment in line 1:
24 //
25 //    -->function foo1()
26 //    -->  function foo3
27 //    -->  endfunction
28 //    -->  disp("line a");
29 //    -->  disp("line b");
30 //    -->  disp("line c");
31 //    -->endfunction
32 //
33 //    -->setbpt("foo1",[3,4])
34 //
35 //    -->foo1()
36 //    Stop after row     3 in function foo1 :
37 // ...
38 //test of line numbering in  functions, handling initial comments
39 // ================ Test 1 =====================================================
40 function foo,endfunction
41 L=macr2tree(foo);
42 R1=L(6)==1&size(L)==6;
43 if ~R1 then bugmes();quit;end
44 clear foo;
45 // ================ Test 2 =====================================================
46 // known syntax error in scilab 6
47 //function foo,,endfunction
48 //L=macr2tree(foo);
49 //R2=L(6)==1&size(L)==6
50 //if ~R2 then bugmes();quit;end
51 //clear foo;
52 // ================ Test 3 =====================================================
53 function foo(),endfunction
54 L=macr2tree(foo);
55 R3=L(6)==1&size(L)==6;
56 if ~R3 then bugmes();quit;end
57 clear foo;
58 // ================ Test 4 =====================================================
59 function foo(),a=1,endfunction
60 L=macr2tree(foo);
61 R4=L(6)==1&size(L)==6;
62 if ~R4 then bugmes();quit;end
63 clear foo;
64 // ================ Test 5 =====================================================
65 function foo
66 endfunction
67 L=macr2tree(foo);
68 R5=L(6)==2&size(L)==6;
69 if ~R5 then bugmes();quit;end
70 clear foo;
71 // ================ Test 6 =====================================================
72 function foo,
73 endfunction
74 L=macr2tree(foo);
75 R6=L(6)==2&size(L)==6;
76 if ~R6 then bugmes();quit;end
77 clear foo;
78 // ================ Test 7 =====================================================
79 function foo//ZZZZ
80 endfunction
81 L=macr2tree(foo);
82 R7=L(6)==2&size(L)==6;
83 if ~R7 then bugmes();quit;end
84 clear foo;
85 // ================ Test 8 =====================================================
86 function foo,//ZZZZ
87 endfunction
88 L=macr2tree(foo);
89 R8=L(6)==2&size(L)==6;
90 if ~R8 then bugmes();quit;end
91 clear foo;
92 // ================ Test 9 =====================================================
93 function foo
94     //ZZZZ
95 endfunction
96 L=macr2tree(foo);
97 R9=L(6)==3&size(L)==6;
98 if ~R9 then bugmes();quit;end
99 clear foo;
100 // ================ Test 10 ====================================================
101 function foo,//ZZZZ
102     a=1
103 endfunction
104 L=macr2tree(foo);
105 R10=L(6)==3&size(L)==6;
106 if ~R10 then bugmes();quit;end
107 clear foo;
108 // ================ Test 11 ====================================================
109 function loc=foo,[l,w]=where(),loc=l(1),endfunction
110 R11= and(foo()==1);
111 if ~R11 then bugmes();quit;end
112 clear foo;
113 // ================ Test 12 ====================================================
114 function loc=foo,//ZZZZ
115     [l,w]=where(),loc=l(1)
116 endfunction
117 R12= and(foo()==2);
118 if ~R12 then bugmes();quit;end
119 clear foo;
120 // ================ Test 13 ====================================================
121 function loc=foo
122     //ZZZZ
123     [l,w]=where(),loc=l(1)
124 endfunction
125 R13= and(foo()==3);
126 if ~R13 then bugmes();quit;end
127 clear foo;
128 // ================ Test 14 ====================================================
129 function loc=foo1()
130     [l,w]=where(),loc=l(1)
131     function loc=foo3(loc)
132         [l,w]=where(),loc=[loc,l(1:2)']
133     endfunction
134     [l,w]=where(),loc=[loc,l(1)]
135     loc=foo3(loc)
136 endfunction
137 R14= and(foo1()==[2,6,2,7]);
138 if ~R14 then bugmes();quit;end
139 clear foo1;
140 // ================ Test 15 ====================================================
141 function loc=foo1()//ZZZZZZZ
142     [l,w]=where(),loc=l(1)
143     function loc=foo3(loc)
144         [l,w]=where(),loc=[loc,l(1:2)']
145     endfunction
146     [l,w]=where(),loc=[loc,l(1)]
147     loc=foo3(loc)
148 endfunction
149 L=macr2tree(foo1);
150 R15=and(foo1()==[2,6,2,7])&(L(6)==8);
151 if ~R15 then bugmes();quit;end
152 clear foo1;
153 // ================ Test 16 ====================================================
154 function loc=foo1()
155     //ZZZZZZZ
156     [l,w]=where(),loc=l(1)
157     function loc=foo3(loc)
158         [l,w]=where(),loc=[loc,l(1:2)']
159     endfunction
160     [l,w]=where(),loc=[loc,l(1)]
161     loc=foo3(loc)
162 endfunction
163 L=macr2tree(foo1);
164 R16=and(foo1()==[3,7,2,8])&(L(6)==9);
165 if ~R16 then bugmes();quit;end
166 clear foo1;
167 // ================ Test 17 ====================================================
168 //pb execution des macros non compilee
169 deff("y=foo(a,b,c)","y=a+b+c");
170 R17=foo("aaa","bbb","cc")=="aaabbbcc";
171 if ~R17 then bugmes();quit;end
172 clear foo
173 // ================ Test 18 ====================================================
174 deff("y=foo(a,b,c)",["","y=a+b+c"]);
175 R18=foo("aaa","bbb","cc")=="aaabbbcc";
176 if ~R18 then bugmes();quit;end
177 clear foo
178 // ================ Test 19 ====================================================
179 // comp is obsolete since Scilab 6
180 //comp(foo)
181 //R19=foo('aaa','bbb','cc')=='aaabbbcc'
182 //if ~R19 then bugmes();quit;end
183 //clear foo
184 // ================ Test 20 ====================================================
185 //function definition nested in a or loop!
186 z=0;R20=%t;
187 for k=1:2
188     function y=foo()
189         y=k
190     endfunction
191     L=macr2tree(foo);
192     R20=R20&(L(6)==3);
193     z=z+foo();
194 end
195 R20=R20&z==3;
196 if ~R20 then bugmes();quit;end
197 // ================ Test 21 ====================================================
198 //test avec getf
199 t=["function foo,//ZZZZ"
200 "  a=1"
201 "endfunction"];
202 mputl(t,TMPDIR+"/foo.sci");
203 warning("off");
204 exec(TMPDIR+"/foo.sci")
205 function foo,//ZZZZ
206   a=1
207 endfunction
208 warning("on");
209 L=macr2tree(foo); //getf ignores declaration line comments
210 R21=L(6)==3&size(L)==6;
211 if ~R21 then bugmes();quit;end
212 clear foo;
213 // ================ Test 22 ====================================================
214 t=["function foo"
215 "//ZZZZ"
216 "  a=1"
217 "endfunction"];
218 mputl(t,TMPDIR+"/foo.sci");
219 exec(TMPDIR+"/foo.sci")
220 function foo
221 //ZZZZ
222   a=1
223 endfunction
224 L=macr2tree(foo); //getf ignores declaration line comments
225 R22=L(6)==4&size(L)==6;
226 if ~R22 then bugmes();quit;end
227 clear foo;
228 // ================ Test 23 ====================================================
229 function foo()
230     function bar()
231         a=1
232     endfunction
233 endfunction
234 t=macr2tree(foo);
235 t=tree2code(t);
236 if size(t,1)<>5 then bugmes();quit;end
237 clear foo
238 function foo()
239     function bar()
240         a=1
241     endfunction
242 endfunction
243 t1=macr2tree(foo);
244 t1=tree2code(t1);
245 if or(t<>t1) then bugmes();quit;end
246 // ================ Test 24 ====================================================
247 function test;endfunction
248 L=macr2tree(test);
249 if size(L)<>6 then bugmes();quit;end
250 if L(6)<>1 then bugmes();quit;end