Bug 5149 fixed: test_run(): Calls to exec functions are no more logged by diary
[scilab.git] / scilab / modules / scicos / tests / unit_tests / scicos.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 load('SCI/modules/scicos/macros/scicos_scicos/lib');
8 load('SCI/modules/scicos/macros/scicos_utils/lib');
9 load('SCI/modules/scicos/macros/scicos_menus/lib');
10 if ( ~isdef("scicos_pal") | ~isdef("%scicos_menu") | ..
11        ~isdef("%scicos_short") | ~isdef("%scicos_help") | ..
12        ~isdef("%scicos_display_mode") | ~isdef("modelica_libs") | ..
13        ~isdef("scicos_pal_libs") ) then
14      [scicos_pal, %scicos_menu, %scicos_short, modelica_libs, scicos_pal_libs,...
15      %scicos_lhb_list, %CmenuTypeOneVector, %scicos_gif,%scicos_contrib, ..
16      %scicos_libs, %scicos_with_grid, %scs_wgrid] = initial_scicos_tables();
17 end
18 exec(loadpallibs,-1) 
19 exec('SCI/modules/scicos/tests/unit_tests/scicos_tests.sci');
20 options=default_options();
21 //build the block set
22 blockslib='scs'+['Branching','Events','Misc','Sinks','Threshold','Linear', ...
23           'NonLinear','Sources','Electrical','Hydraulics']+'lib';
24 Blocs=[]
25  Blocs  =
26  
27      []
28 for blocklib=blockslib
29   B=string(blocklib);Blocs=[Blocs;B(2:$)];
30 end
31 Blocs(Blocs=="m_sin")=[];
32 nb=size(Blocs,1);
33 if checkdefine() then bugmes();quit;end
34 if checkinputs() then bugmes();quit;end
35 if checkoutputs() then bugmes();quit;end
36 if checkorigin() then bugmes();quit;end
37 if checkdeput() then bugmes();quit;end
38 if checkfiring() then bugmes();quit;end
39 if check_define_ports() then bugmes();quit;end
40 if check_set_ports() then bugmes();quit;end
41  
42 //  Scicos
43  
44 //
45  
46 //  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
47  
48 //                      - Alan Layec <alan.layec@inria.fr>
49  
50 //
51  
52 // This program is free software; you can redistribute it and/or modify
53  
54 // it under the terms of the GNU General Public License as published by
55  
56 // the Free Software Foundation; either version 2 of the License, or
57  
58 // (at your option) any later version.
59  
60 //
61  
62 // This program is distributed in the hope that it will be useful,
63  
64 // but WITHOUT ANY WARRANTY; without even the implied warranty of
65  
66 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
67  
68 // GNU General Public License for more details.
69  
70 //
71  
72 // You should have received a copy of the GNU General Public License
73  
74 // along with this program; if not, write to the Free Software
75  
76 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
77  
78 //
79  
80 // See the file ../license.txt
81  
82 //
83  
84  
85 function [%ok,%1,%2,%3,%4,%5,...
86           %6,%7,%8,%9,%10,...
87           %11,%12,%13,%14,%15,...
88           %16,%17,%18,%19,%20]=setvalue(%desc,%lables,%typ,%ini)
89 // To avoid infinite loops in set section of blocks during eval
90 if %scicos_prob==%t then 
91         %ok=%f
92         [%1,%2,%3,%4,%5,...
93          %6,%7,%8,%9,%10,...
94          %11,%12,%13,%14,%15,...
95          %16,%17,%18,%19,%20]=(0,0,0,0,...
96                                0,0,0,0,0,0,...
97                                0,0,0,0,0,...
98                                0,0,0,0,0)
99 return;end
100 //  setvalues -  data acquisition, getvalue equivalent without dialog
101 //%Syntax
102 //  [%ok,x1,..,x18]=setvalue(desc,labels,typ,ini)
103 //%Parameters
104 //  desc    : column vector of strings, dialog general comment 
105 //  labels  : n column vector of strings, labels(i) is the label of 
106 //            the ith required value
107 //  typ     : list(typ1,dim1,..,typn,dimn)
108 //            typi : defines the type of the ith required value
109 //                   if may have the following values:
110 //                   'mat' : stands for matrix of scalars 
111 //                   'col' : stands for column vector of scalars
112 //                   'row' : stands for row vector of scalars
113 //                   'vec' : stands for  vector of scalars
114 //                   'str' : stands for string
115 //                   'lis' : stands for list
116 //                   'pol' : stands for polynomials
117 //                   'r'   : stands for rational
118 //            dimi : defines the size of the ith required value
119 //                   it must be
120 //                    - an integer or a 2-vector of integers (-1 stands for
121 //                      arbitrary dimension)
122 //                    - an evaluatable character string
123 //  ini     : n column vector of strings, ini(i) gives the suggested
124 //            response for the ith required value
125 //  %ok      : boolean ,%t if %ok button pressed, %f if cancel button pressed
126 //  xi      : contains the ith required value if %ok==%t
127 //%Description
128 // getvalues function uses ini strings to evaluate required args 
129 // with error checking,
130 //%Remarks
131 // All correct scilab syntax may be used as responses, for matrices 
132 // and vectors getvalues automatically adds [ ] around the given response
133 // before numerical evaluation
134 //%Example
135 // labels=['magnitude';'frequency';'phase    '];
136 // [ampl,freq,ph]=setvalue('define sine signal',labels,..
137 //            list('vec',1,'vec',1,'vec',1),['0.85';'10^2';'%pi/3'])
138 // 
139 //%See also
140 // x_mdialog, dialog
141 //!
142 // 17/01/07 -Alan- - %scicos_context behavior reviewed in accordance to context_evstr macro
143 //                 - pass int in field of type vec/mat/row/col (F. Nassif's Work)
144 //
145 // 05/02/07 -Alan- : update to %20 rhs parameters
146 //
147 // Copyright INRIA
148 [%lhs,%rhs]=argn(0)
149 %nn=prod(size(%lables))
150 if %lhs<>%nn+2&%lhs<>%nn+1 then error(41),end
151 if size(%typ)<>2*%nn then
152   error('typ : list(''type'',[sizes],...)')
153 end
154 %1=[];%2=[];%3=[];%4=[];%5=[];
155 %6=[];%7=[];%8=[];%9=[];%10=[];
156 %11=[];%12=[];%13=[];%14=[],%15=[];
157 %16=[];%17=[];%18=[];%19=[],%20=[];
158 if %rhs==3 then  %ini=emptystr(%nn,1),end
159 %ok=%t
160 while %t do
161   %str=%ini;
162   if %str==[] then %ok=%f,break,end
163   for %kk=1:%nn
164     %cod=ascii(%str(%kk))
165     %spe=find(%cod==10)
166     if %spe<>[] then
167       %semi=ascii(';')
168       %cod(%spe)=%semi*ones(%spe')
169       %str(%kk)=ascii(%cod)
170     end
171   end
172   [%vv_list,%ierr_vec]=context_evstr(%str,%scicos_context,%typ);
173   %noooo=0
174   for %kk=1:%nn
175     %vv=%vv_list(%kk)
176     %ierr=%ierr_vec(%kk)
177     select part(%typ(2*%kk-1),1:3)
178     case 'mat'
179       if %ierr<>0  then 
180         %noooo=-%kk,break,
181       end
182       //29/12/06
183       //the type of %vv is accepted if it is constant or integer
184       if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
185       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
186       [%mmmm,%nnnnn]=size(%vv)
187       %ssss=string(%sz(1))+' x '+string(%sz(2))
188       if %mmmm*%nnnnn==0 then
189         if  %sz(1)>=0&%sz(2)>=0&%sz(1)*%sz(2)<>0 then %noooo=%kk,break,end
190       else
191         if %sz(1)>=0 then if %mmmm<>%sz(1) then %noooo=%kk,break,end,end
192         if %sz(2)>=0 then if %nnnnn<>%sz(2) then %noooo=%kk,break,end,end
193       end
194     case 'vec'
195       if %ierr<>0  then 
196         %noooo=-%kk,break,
197       end
198       //17/01/07
199       //the type of %vv is accepted if it is constant or integer
200       if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
201       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
202       %ssss=string(%sz(1))
203       %nnnnn=prod(size(%vv))
204       if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
205     case 'pol'
206       if %ierr<>0  then 
207         %noooo=-%kk,break,
208       end
209       if %ierr<>0 then %noooo=-%kk;break,end
210       if (type(%vv)>2 & type(%vv)<>8) then %noooo=-%kk,break,end
211       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
212       %ssss=string(%sz(1))
213       %nnnnn=prod(size(%vv))
214       if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
215     case 'row'
216       if %ierr<>0  then 
217         %noooo=-%kk,break,
218       end
219       //17/01/07
220       //the type of %vv is accepted if it is constant or integer
221       if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
222       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
223       if %sz(1)<0 then
224         %ssss='1 x *'
225       else
226         %ssss='1 x '+string(%sz(1))
227       end
228       [%mmmm,%nnnnn]=size(%vv)
229       if %mmmm<>1 then %noooo=%kk,break,end,
230       if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
231     case 'col'
232       if %ierr<>0  then 
233         %noooo=-%kk,break,
234       end
235       //17/01/07
236       //the type of %vv is accepted if it is constant or integer
237       if and(type(%vv)<>[1 8]) then %nok=-%kk,break,end
238       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
239       if %sz(1)<0 then
240         %ssss='* x 1'
241       else
242         %ssss=string(%sz(1))+' x 1'
243       end
244       [%mmmm,%nnnnn]=size(%vv)
245       if %nnnnn<>1 then %noooo=%kk,break,end,
246       if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
247     case 'str'
248       clear %vv
249       %vv=%str(%kk)
250       if type(%vv)<>10 then %noooo=-%kk,break,end
251       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
252       %ssss=string(%sz(1))
253       %nnnnn=prod(size(%vv))
254       if %sz(1)>=0 then if %nnnnn<>1 then %noooo=%kk,break,end,end
255     case 'lis'
256       if %ierr<>0  then 
257         %noooo=-%kk,break,
258       end
259       if type(%vv)<>15& type(%vv)<>16& type(%vv)<>17 then %noooo=-%kk,break,end
260       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
261       %ssss=string(%sz(1))
262       %nnnnn=size(%vv)
263       if %sz(1)>=0 then if %nnnnn<>%sz(1) then %noooo=%kk,break,end,end
264     case 'r  '
265       if %ierr<>0  then 
266         %noooo=-%kk,break,
267       end
268       if type(%vv)<>16 then %noooo=-%kk,break,end
269       if typeof(%vv)<>'rational' then %noooo=-%kk,break,end
270       %sz=%typ(2*%kk);if type(%sz)==10 then %sz=evstr(%sz),end
271       [%mmmm,%nnnnn]=size(%vv(2))
272       %ssss=string(%sz(1))+' x '+string(%sz(2))
273       if %mmmm*%nnnnn==0 then
274         if  %sz(1)>=0&%sz(2)>=0&%sz(1)*%sz(2)<>0 then %noooo=%kk,break,end
275       else
276         if %sz(1)>=0 then if %mmmm<>%sz(1) then %noooo=%kk,break,end,end
277         if %sz(2)>=0 then if %nnnnn<>%sz(2) then %noooo=%kk,break,end,end
278       end
279     case 'gen'
280       //accept all
281     else
282       error('Incorrect type :'+%typ(2*%kk-1))
283     end
284     execstr('%'+string(%kk)+'=%vv')
285     clear %vv
286   end
287   if %noooo>0 then 
288     messagebox(['answer given for  '+%lables(%noooo);
289              'has invalid dimension: ';
290              'waiting for dimension  '+%ssss],'modal')
291     %ini=%str
292     %ok=%f;break
293   elseif %noooo<0 then
294     messagebox(['answer given for  '+%lables(-%noooo);
295              'has incorrect type :'+ %typ(-2*%noooo-1)],'modal')
296     %ini=%str
297     %ok=%f;break
298   else
299     break
300   end
301 end
302 if %lhs==%nn+2 then
303   execstr('%'+string(%lhs-1)+'=%str')
304 end
305 endfunction
306