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