Mercurial > hg > ltpda
comparison testing/utp_1.1/utps/ao/utp_ao_ao.m @ 44:409a22968d5e default
Add unit tests
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Tue, 06 Dec 2011 18:42:11 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
43:bc767aaa99a8 | 44:409a22968d5e |
---|---|
1 % UTP_AO_AO a set of UTPs for the ao/ao method | |
2 % | |
3 % M Hewitson 06-08-08 | |
4 % | |
5 % $Id: utp_ao_ao.m,v 1.73 2011/08/15 10:44:51 hewitson Exp $ | |
6 % | |
7 | |
8 % <MethodDescription> | |
9 % | |
10 % The ao method of the ao class constructs AOs. | |
11 % | |
12 % </MethodDescription> | |
13 | |
14 function results = utp_ao_ao(varargin) | |
15 | |
16 % Check the inputs | |
17 if nargin == 0 | |
18 | |
19 % Some keywords | |
20 class = 'ao'; | |
21 mthd = 'ao'; | |
22 | |
23 results = []; | |
24 disp('******************************************************'); | |
25 disp(['**** Running UTPs for ' class '/' mthd]); | |
26 disp('******************************************************'); | |
27 | |
28 % Test AOs | |
29 [at1,at2,at3,at4,at5,at6,atvec,atmat] = eval(['get_test_objects_' class]); | |
30 | |
31 % Exception list for the UTPs: | |
32 [ple1,ple2,ple3,ple4,ple5,ple6] = get_test_ples(); | |
33 | |
34 % Define THRESHOLD for computing error | |
35 TOL = 1e-14; | |
36 | |
37 % Run the tests | |
38 results = [results utp_01]; % getInfo call | |
39 results = [results utp_02(mthd, atvec, [], [], ple3)]; % Vector input | |
40 results = [results utp_03(mthd, atmat, [], [], ple3)]; % Matrix input | |
41 results = [results utp_04(mthd, at1, at2, at3, [], [], ple3)]; % List input | |
42 results = [results utp_05(mthd, at1, atvec, atmat, [], [], ple3)]; % Test with mixed input | |
43 results = [results utp_06(mthd, at1, [], ple2)]; % Test history is working | |
44 | |
45 % Old format | |
46 results = [results utp_08]; % Test history is working with ASCII file constructor | |
47 results = [results utp_09]; % Test history is working with complex ASCII file constructor | |
48 results = [results utp_13]; % Test history is working with vals constructor | |
49 results = [results utp_15]; % Test history is working with plist(fcn) constructor | |
50 results = [results utp_16]; % Test history is working with plist(vals) constructor | |
51 results = [results utp_17]; % Test history is working with plist(x/y-vals) constructor | |
52 results = [results utp_18]; % Test history is working with plist(tsfcn) constructor | |
53 results = [results utp_19]; % Test history is working with plist(fsfcn) constructor | |
54 results = [results utp_20]; % Test history is working with plist(win) constructor | |
55 results = [results utp_21]; % Test history is working with plist(waveform) constructor | |
56 results = [results utp_23]; % Test history is working with plist(polynomial) constructor | |
57 results = [results utp_25]; % Test history is working with specwin constructor | |
58 results = [results utp_26]; % Test history is working with data-objects constructor | |
59 results = [results utp_28]; % Test history is working with x-vector, y-vector constructor | |
60 results = [results utp_29]; % Test history is working with filename + plist constructor | |
61 results = [results utp_30]; % Test history is working with filename + plist constructor | |
62 results = [results utp_31]; % Test history is working with filename + plist constructor | |
63 | |
64 % constructor specific tests | |
65 results = [results utp_60(class, at3, ple2)]; % Test history is properly handled with MAT file constructor | |
66 results = [results utp_61(class, at1, ple2)]; % Test history is properly handled with XML file constructor | |
67 results = [results utp_62(class, at1, at2, ple2)]; % Test history is working with struct constructor | |
68 % results = [results utp_63(class, ple1)]; % Test history is working with pzmodel-object constructor | |
69 results = [results utp_64(class, at1, ple1, ple2)]; % Test history is working with plist(filename) constructor | |
70 results = [results utp_65(class, at1, ple3)]; % Test history is working with plist(hostname) constructor | |
71 results = [results utp_66(class, ple1)]; % Test history is working with plist(pzmodel) constructor | |
72 results = [results utp_67(class, ple1)]; % Test history is working with pzmodel + plist constructor | |
73 results = [results utp_68(class, at1, ple3)]; % Test history is working with conn+Id constructor | |
74 | |
75 disp('Done.'); | |
76 disp('******************************************************'); | |
77 | |
78 elseif nargin == 1 % Check for UTP functions | |
79 if strcmp(varargin{1}, 'isutp') | |
80 results = 1; | |
81 elseif strcmpi(varargin{1}, 'needs repository') | |
82 results = 2; | |
83 else | |
84 results = 0; | |
85 end | |
86 else | |
87 error('### Incorrect inputs') | |
88 end | |
89 | |
90 %% UTP_01 | |
91 | |
92 % <TestDescription> | |
93 % | |
94 % Tests that the getInfo call works for this method. | |
95 % | |
96 % </TestDescription> | |
97 function result = utp_01 | |
98 | |
99 | |
100 % <SyntaxDescription> | |
101 % | |
102 % Test that the getInfo call works for no sets, all sets, and each set | |
103 % individually. | |
104 % | |
105 % </SyntaxDescription> | |
106 | |
107 msg = ''; | |
108 try | |
109 % <SyntaxCode> | |
110 % Call for no sets | |
111 io(1) = eval([class '.getInfo(''' mthd ''', ''None'')']); | |
112 % Call for all sets | |
113 io(2) = eval([class '.getInfo(''' mthd ''')']); | |
114 % Call for each set | |
115 for kk=1:numel(io(2).sets) | |
116 io(kk+2) = eval([class '.getInfo(''' mthd ''', ''' io(2).sets{kk} ''')']); | |
117 end | |
118 % </SyntaxCode> | |
119 stest = true; | |
120 catch err | |
121 disp(err.message) | |
122 msg = err.message; | |
123 stest = false; | |
124 end | |
125 | |
126 % <AlgoDescription> | |
127 % | |
128 % 1) Check that getInfo call returned an minfo object in all cases. | |
129 % 2) Check that all plists have the correct parameters. | |
130 % | |
131 % </AlgoDescription> | |
132 | |
133 atest = true; | |
134 if stest | |
135 % <AlgoCode> | |
136 % check we have minfo objects | |
137 if isa(io, 'minfo') | |
138 prefs = getappdata(0, 'LTPDApreferences'); | |
139 | |
140 % SET 'None' | |
141 if ~isempty(io(1).sets), atest = false; msg = 'Sets ''None'' isn''t empty.'; end | |
142 if ~isempty(io(1).plists), atest = false; msg = 'First plist for all sets isn''t empty.'; end | |
143 % Check number of SETS | |
144 if numel(io(2).sets) ~= 21, atest = false; msg = 'Number of sets is wrong'; end | |
145 % Check all Sets | |
146 if ~any(strcmpi(io(2).sets, 'Default')), atest = false; msg = 'Sets array does not contain ''Default'''; end | |
147 if ~any(strcmpi(io(2).sets, 'From MAT File')), atest = false; msg = 'Sets array does not contain ''From MAT File'''; end | |
148 if ~any(strcmpi(io(2).sets, 'From XML File')), atest = false; msg = 'Sets array does not contain ''From XML File'''; end | |
149 if ~any(strcmpi(io(2).sets, 'From Repository')), atest = false; msg = 'Sets array does not contain ''From Repository'''; end | |
150 if ~any(strcmpi(io(2).sets, 'From Built-in model')), atest = false; msg = 'Sets array does not contain ''From Built-in Model'''; end | |
151 if ~any(strcmpi(io(2).sets, 'From MAT Data File')), atest = false; msg = 'Sets array does not contain ''From MAT Data File'''; end | |
152 if ~any(strcmpi(io(2).sets, 'From ASCII File')), atest = false; msg = 'Sets array does not contain ''From ASCII File'''; end | |
153 if ~any(strcmpi(io(2).sets, 'From Complex ASCII File')), atest = false; msg = 'Sets array does not contain ''From Complex ASCII File'''; end | |
154 if ~any(strcmpi(io(2).sets, 'From Function')), atest = false; msg = 'Sets array does not contain ''From Function'''; end | |
155 if ~any(strcmpi(io(2).sets, 'From Values')), atest = false; msg = 'Sets array does not contain ''From Values'''; end | |
156 if ~any(strcmpi(io(2).sets, 'From XY Values')), atest = false; msg = 'Sets array does not contain ''From XY Values''';end | |
157 if ~any(strcmpi(io(2).sets, 'From Time-series Function')), atest = false; msg = 'Sets array does not contain ''From Time-series Function'''; end | |
158 if ~any(strcmpi(io(2).sets, 'From XY Function')), atest = false; msg = 'Sets array does not contain ''From XY Function'''; end | |
159 if ~any(strcmpi(io(2).sets, 'From Frequency-series Function')), atest = false; msg = 'Sets array does not contain ''From Frequency-series Function'''; end | |
160 if ~any(strcmpi(io(2).sets, 'From Window')), atest = false; msg = 'Sets array does not contain ''From Window'''; end | |
161 if ~any(strcmpi(io(2).sets, 'From Waveform')), atest = false; msg = 'Sets array does not contain ''From Waveform''';end | |
162 if ~any(strcmpi(io(2).sets, 'From Polynomial')), atest = false; msg = 'Sets array does not contain ''From Polynomial''';end | |
163 if ~any(strcmpi(io(2).sets, 'From Pzmodel')), atest = false; msg = 'Sets array does not contain ''From Pzmodel''';end | |
164 if ~any(strcmpi(io(2).sets, 'From smodel')), atest = false; msg = 'Sets array does not contain ''From smodel''';end | |
165 if ~any(strcmpi(io(2).sets, 'From pest')), atest = false; msg = 'Sets array does not contain ''From pest''';end | |
166 if ~any(strcmpi(io(2).sets, 'From Parameter')), atest = false; msg = 'Sets array does not contain ''From Parameter'''; end | |
167 if numel(io(2).plists) ~= numel(io(2).sets), atest = false; msg = 'Number of plists does not match number of sets'; end | |
168 %%%%%%%%%% SET 'Default' | |
169 % Check key | |
170 pn = 3; | |
171 [atest, msg] = checkParamNumber(io, pn, 3); | |
172 % Check default value | |
173 % Check options | |
174 %%%%%%%%%% SET 'From MAT File' | |
175 pn = 4; | |
176 [atest, msg] = checkParamNumber(io, pn, 1); | |
177 % Check key | |
178 if ~io(pn).plists.isparam('filename'), atest = false; end | |
179 % Check default value | |
180 if ~isEmptyChar(io(pn).plists.find('filename')), atest = false; end | |
181 % Check options | |
182 if ~isequal(io(pn).plists.getOptionsForParam('filename'), {''}), atest = false; end | |
183 %%%%%%%%%% SET 'From XML File' | |
184 pn = 5; | |
185 [atest, msg] = checkParamNumber(io, pn, 1); | |
186 % Check key | |
187 if ~io(pn).plists.isparam('filename'), atest = false; end | |
188 % Check default value | |
189 if ~isEmptyChar(io(pn).plists.find('filename')), atest = false; end | |
190 % Check options | |
191 if ~isequal(io(pn).plists.getOptionsForParam('filename'), {''}), atest = false; end | |
192 %%%%%%%%%% SET 'From Repository' | |
193 pn = 6; | |
194 [atest, msg] = checkParamNumber(io, pn, 7); | |
195 % Check key | |
196 if ~io(pn).plists.isparam('hostname'), atest = false; end | |
197 if ~io(pn).plists.isparam('id'), atest = false; end | |
198 if ~io(pn).plists.isparam('cid'), atest = false; end | |
199 if ~io(pn).plists.isparam('database'), atest = false; end | |
200 if ~io(pn).plists.isparam('binary'), atest = false; end | |
201 if ~io(pn).plists.isparam('username'), atest = false; end | |
202 if ~io(pn).plists.isparam('password'), atest = false; end | |
203 % Check default value | |
204 if ~isEmptyDouble(io(pn).plists.find('id')), atest = false; end | |
205 if ~isEmptyDouble(io(pn).plists.find('cid')), atest = false; end | |
206 if ~isequal(io(pn).plists.find('binary'), 'yes'), atest = false; end | |
207 % Check options | |
208 if ~isequal(io(pn).plists.getOptionsForParam('id'), {[]}), atest = false; end | |
209 if ~isequal(io(pn).plists.getOptionsForParam('cid'), {[]}), atest = false; end | |
210 if ~isequal(io(pn).plists.getOptionsForParam('binary'), {'yes', 'no'}), atest = false; end | |
211 %%%%%%%%%% SET 'From Built-in model' | |
212 pn = 7; | |
213 [atest, msg] = checkParamNumber(io, pn, 1); | |
214 % Check key | |
215 if ~io(pn).plists.isparam('built-in'), atest = false; end | |
216 % Check default value | |
217 if ~isEmptyChar(io(pn).plists.find('built-in')), atest = false; end | |
218 % Check options | |
219 if ~isequal(io(pn).plists.getOptionsForParam('built-in'), {''}), atest = false; end | |
220 %%%%%%%%%% SET 'From MAT Data File' | |
221 pn = 8; | |
222 [atest, msg] = checkParamNumber(io, pn, 9); | |
223 % Check key | |
224 if ~io(pn).plists.isparam('name'), atest = false; end | |
225 if ~io(pn).plists.isparam('description'), atest = false; end | |
226 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
227 if ~io(pn).plists.isparam('filename'), atest = false; end | |
228 if ~io(pn).plists.isparam('type'), atest = false; end | |
229 if ~io(pn).plists.isparam('columns'), atest = false; end | |
230 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
231 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
232 if ~io(pn).plists.isparam('fs'), atest = false; end | |
233 % Check default value | |
234 if ~isEmptyChar(io(pn).plists.find('name')), atest = false; end | |
235 if ~isEmptyChar(io(pn).plists.find('description')), atest = false; end | |
236 if ~isEmptyDouble(io(pn).plists.find('plotinfo')), atest = false; end | |
237 if ~isEmptyChar(io(pn).plists.find('filename')), atest = false; end | |
238 if ~isequal(io(pn).plists.find('type'), 'cdata'), atest = false; end | |
239 if ~isEmptyDouble(io(pn).plists.find('columns')), atest = false; end | |
240 if ~isequal(io(pn).plists.find('xunits'), 's'), atest = false; end | |
241 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
242 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
243 % Check options | |
244 if ~isequal(io(pn).plists.getOptionsForParam('name'), {''}), atest = false; end | |
245 if ~isequal(io(pn).plists.getOptionsForParam('description'), {''}), atest = false; end | |
246 % not sure how to test this | |
247 if ~isequal(io(pn).plists.getOptionsForParam('filename'), {''}), atest = false; end | |
248 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'tsdata', 'fsdata', 'xydata', 'cdata'}), atest = false; end | |
249 if ~isequal(io(pn).plists.getOptionsForParam('columns'), {[]}), atest = false; end | |
250 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'s'}), atest = false; end | |
251 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
252 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
253 %%%%%%%%%% SET 'From ASCII File' | |
254 pn = 9; | |
255 [atest, msg] = checkParamNumber(io, pn, 14); | |
256 % Check key | |
257 if ~io(pn).plists.isparam('name'), atest = false; end | |
258 if ~io(pn).plists.isparam('description'), atest = false; end | |
259 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
260 if ~io(pn).plists.isparam('filename'), atest = false; end | |
261 if ~io(pn).plists.isparam('type'), atest = false; end | |
262 if ~io(pn).plists.isparam('columns'), atest = false; end | |
263 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
264 if ~io(pn).plists.isparam('t0'), atest = false; end | |
265 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
266 if ~io(pn).plists.isparam('comment_char'), atest = false; end | |
267 if ~io(pn).plists.isparam('maxlines'), atest = false; end | |
268 if ~io(pn).plists.isparam('fs'), atest = false; end | |
269 if ~io(pn).plists.isparam('robust'), atest = false; end | |
270 if ~io(pn).plists.isparam('delimiter'), atest = false; end | |
271 % Check default value | |
272 if ~isequal(io(pn).plists.find('name'), ''), atest = false; end | |
273 if ~isEmptyChar(io(pn).plists.find('description')), atest = false; end | |
274 if ~isEmptyDouble(io(pn).plists.find('plotinfo')), atest = false; end | |
275 if ~isEmptyChar(io(pn).plists.find('filename')), atest = false; end | |
276 if ~isequal(io(pn).plists.find('type'), 'cdata'), atest = false; end | |
277 if ~isEmptyDouble(io(pn).plists.find('columns')), atest = false; end | |
278 if ~isEmptyChar(io(pn).plists.find('xunits')), atest = false; end | |
279 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
280 if ~isequal(double(time(io(pn).plists.find('t0'))), 0), atest = false; end | |
281 if ~isEmptyChar(io(pn).plists.find('comment_char')), atest = false; end | |
282 if ~isEmptyDouble(io(pn).plists.find('maxlines')), atest = false; end | |
283 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
284 if ~isequal(io(pn).plists.find('robust'), 'no'), atest = false; end | |
285 if ~isequal(io(pn).plists.find('delimiter'), ''), atest = false; end | |
286 % Check options | |
287 if ~isequal(io(pn).plists.getOptionsForParam('name'), {''}), atest = false; end | |
288 if ~isequal(io(pn).plists.getOptionsForParam('description'), {''}), atest = false; end | |
289 % not sure how to test this | |
290 if ~isequal(io(pn).plists.getOptionsForParam('filename'), {''}), atest = false; end | |
291 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'tsdata', 'fsdata', 'xydata', 'cdata'}), atest = false; end | |
292 if ~isequal(io(pn).plists.getOptionsForParam('columns'), {[]}), atest = false; end | |
293 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {''}), atest = false; end | |
294 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
295 if ~isequal(io(pn).plists.getOptionsForParam('comment_char'), {''}), atest = false; end | |
296 if ~isequal(io(pn).plists.getOptionsForParam('maxlines'), {[]}), atest = false; end | |
297 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
298 if ~isequal(io(pn).plists.getOptionsForParam('robust'), {'yes', 'no'}), atest = false; end | |
299 if ~isequal(io(pn).plists.getOptionsForParam('delimiter'), {''}), atest = false; end | |
300 if ~isequal(io(pn).plists.getOptionsForParam('t0'), {'1970-01-01 00:00:00.000'}), atest = false; end | |
301 %%%%%%%%%% SET 'From Complex ASCII File' | |
302 pn = 10; | |
303 [atest, msg] = checkParamNumber(io, pn, 11); | |
304 % Check key | |
305 if ~io(pn).plists.isparam('name'), atest = false; end | |
306 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
307 if ~io(pn).plists.isparam('description'), atest = false; end | |
308 if ~io(pn).plists.isparam('filename'), atest = false; end | |
309 if ~io(pn).plists.isparam('complex_type'), atest = false; end | |
310 if ~io(pn).plists.isparam('t0'), atest = false; end | |
311 if ~io(pn).plists.isparam('type'), atest = false; end | |
312 if ~io(pn).plists.isparam('columns'), atest = false; end | |
313 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
314 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
315 if ~io(pn).plists.isparam('comment_char'), atest = false; end | |
316 % Check default value | |
317 if ~isEmptyChar(io(pn).plists.find('filename')), atest = false; end | |
318 if ~strcmp(io(pn).plists.find('complex_type'), 'real/imag'), atest = false; end | |
319 if ~strcmp(io(pn).plists.find('type'), 'fsdata'), atest = false; end | |
320 if ~isequal(io(pn).plists.find('columns'), [1 2 3]), atest = false; end | |
321 if ~isequal(io(pn).plists.find('xunits'), 'Hz'), atest = false; end | |
322 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
323 if ~isEmptyChar(io(pn).plists.find('comment_char')), atest = false; end | |
324 % Check options | |
325 if ~isequal(io(pn).plists.getOptionsForParam('filename'), {''}), atest = false; end | |
326 if ~isequal(io(pn).plists.getOptionsForParam('complex_type'), { 'real/imag', 'abs/deg', 'dB/deg', 'abs/rad', 'dB/rad'}), atest = false; end | |
327 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'tsdata', 'fsdata', 'xydata', 'cdata'}), atest = false; end | |
328 if ~isequal(io(pn).plists.getOptionsForParam('columns'), {[1 2 3]}), atest = false; end | |
329 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'Hz'}), atest = false; end | |
330 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
331 if ~isequal(io(pn).plists.getOptionsForParam('comment_char'), {''}), atest = false; end | |
332 %%%%%%%%%% SET 'From Function' | |
333 pn = 11; | |
334 [atest, msg] = checkParamNumber(io, pn, 5); | |
335 % Check key | |
336 if ~io(pn).plists.isparam('name'), atest = false; end | |
337 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
338 if ~io(pn).plists.isparam('description'), atest = false; end | |
339 if ~io(pn).plists.isparam('fcn'), atest = false; end | |
340 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
341 % Check default value | |
342 if ~isEmptyChar(io(pn).plists.find('fcn')), atest = false; end | |
343 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
344 % Check options | |
345 if ~isequal(io(pn).plists.getOptionsForParam('fcn'), {''}), atest = false; end | |
346 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
347 %%%%%%%%%% SET 'From Values' | |
348 pn = 12; | |
349 [atest, msg] = checkParamNumber(io, pn, 6); | |
350 % Check key | |
351 if ~io(pn).plists.isparam('name'), atest = false; end | |
352 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
353 if ~io(pn).plists.isparam('description'), atest = false; end | |
354 if ~io(pn).plists.isparam('vals'), atest = false; end | |
355 if ~io(pn).plists.isparam('n'), atest = false; end | |
356 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
357 % Check default value | |
358 if ~isEmptyDouble(io(pn).plists.find('vals')), atest = false; end | |
359 if ~isequal(io(pn).plists.find('n'), 1), atest = false; end | |
360 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
361 % Check options | |
362 if ~isequal(io(pn).plists.getOptionsForParam('vals'), {[]}), atest = false; end | |
363 if ~isequal(io(pn).plists.getOptionsForParam('n'), {[1]}), atest = false; end | |
364 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
365 %%%%%%%%%% SET 'From XY Values' | |
366 pn = 13; | |
367 [atest, msg] = checkParamNumber(io, pn, 11); | |
368 % Check key | |
369 if ~io(pn).plists.isparam('name'), atest = false; end | |
370 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
371 if ~io(pn).plists.isparam('description'), atest = false; end | |
372 if ~io(pn).plists.isparam('type'), atest = false; end | |
373 if ~io(pn).plists.isparam('fs'), atest = false; end | |
374 if ~io(pn).plists.isparam('t0'), atest = false; end | |
375 if ~io(pn).plists.isparam('toffset'), atest = false; end | |
376 if ~io(pn).plists.isparam('xvals'), atest = false; end | |
377 if ~io(pn).plists.isparam('yvals'), atest = false; end | |
378 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
379 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
380 if ~io(pn).plists.isparam('t0'), atest = false; end | |
381 % Check default value | |
382 if ~isequal(io(pn).plists.find('type'), ''), atest = false; end | |
383 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
384 if ~isequal(double(time(io(pn).plists.find('t0'))), 0), atest = false; end | |
385 if ~isequal(io(pn).plists.find('toffset'), 0), atest = false; end | |
386 if ~isEmptyDouble(io(pn).plists.find('xvals')), atest = false; end | |
387 if ~isEmptyDouble(io(pn).plists.find('yvals')), atest = false; end | |
388 if ~isEmptyChar(io(pn).plists.find('xunits')), atest = false; end | |
389 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
390 if ~isequal(io(pn).plists.find('t0'), '1970-01-01 00:00:00.000'), atest = false; end | |
391 % Check options | |
392 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'', 'tsdata', 'fsdata', 'xydata', 'cdata'}), atest = false; end | |
393 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
394 if ~isequal(io(pn).plists.getOptionsForParam('xvals'), {[]}), atest = false; end | |
395 if ~isequal(io(pn).plists.getOptionsForParam('yvals'), {[]}), atest = false; end | |
396 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {''}), atest = false; end | |
397 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
398 if ~isequal(io(pn).plists.getOptionsForParam('t0'), {'1970-01-01 00:00:00.000'}), atest = false; end | |
399 %%%%%%%%%% SET 'From Time-series Function' | |
400 pn = 14; | |
401 [atest, msg] = checkParamNumber(io, pn, 9); | |
402 % Check key | |
403 if ~io(pn).plists.isparam('name'), atest = false; end | |
404 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
405 if ~io(pn).plists.isparam('description'), atest = false; end | |
406 if ~io(pn).plists.isparam('tsfcn'), atest = false; end | |
407 if ~io(pn).plists.isparam('fs'), atest = false; end | |
408 if ~io(pn).plists.isparam('nsecs'), atest = false; end | |
409 if ~io(pn).plists.isparam('t0'), atest = false; end | |
410 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
411 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
412 % Check default value | |
413 if ~isequal(io(pn).plists.find('tsfcn'), 't'), atest = false; end | |
414 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
415 if ~isEmptyDouble(io(pn).plists.find('nsecs')), atest = false; end | |
416 if ~isequal(double(time(io(pn).plists.find('t0'))), 0), atest = false; end | |
417 if ~isequal(io(pn).plists.find('xunits'), 's'), atest = false; end | |
418 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
419 % Check options | |
420 if ~isequal(io(pn).plists.getOptionsForParam('tsfcn'), {'t'}), atest = false; end | |
421 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
422 if ~isequal(io(pn).plists.getOptionsForParam('nsecs'), {[]}), atest = false; end | |
423 if ~isequal(io(pn).plists.getOptionsForParam('t0'), {'1970-01-01 00:00:00.000'}), atest = false; end | |
424 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'s'}), atest = false; end | |
425 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
426 %%%%%%%%%% SET 'From XY Function' | |
427 pn = 15; | |
428 [atest, msg] = checkParamNumber(io, pn, 7); | |
429 % Check key | |
430 if ~io(pn).plists.isparam('name'), atest = false; end | |
431 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
432 if ~io(pn).plists.isparam('description'), atest = false; end | |
433 if ~io(pn).plists.isparam('xyfcn'), atest = false; end | |
434 if ~io(pn).plists.isparam('x'), atest = false; end | |
435 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
436 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
437 % Check default value | |
438 if ~isequal(io(pn).plists.find('xyfcn'), 'x'), atest = false; end | |
439 if ~isEmptyDouble(io(pn).plists.find('x')), atest = false; end | |
440 if ~isequal(io(pn).plists.find('xunits'), ''), atest = false; end | |
441 if ~isequal(io(pn).plists.find('yunits'), ''), atest = false; end | |
442 % Check options | |
443 if ~isequal(io(pn).plists.getOptionsForParam('xyfcn'), {'x'}), atest = false; end | |
444 if ~isequal(io(pn).plists.getOptionsForParam('x'), {[]}), atest = false; end | |
445 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {''}), atest = false; end | |
446 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
447 %%%%%%%%%% SET 'From Frequency-series Function' | |
448 pn = 16; | |
449 [atest, msg] = checkParamNumber(io, pn, 11); | |
450 % Check key | |
451 if ~io(pn).plists.isparam('name'), atest = false; end | |
452 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
453 if ~io(pn).plists.isparam('description'), atest = false; end | |
454 if ~io(pn).plists.isparam('fsfcn'), atest = false; end | |
455 if ~io(pn).plists.isparam('f1'), atest = false; end | |
456 if ~io(pn).plists.isparam('f2'), atest = false; end | |
457 if ~io(pn).plists.isparam('nf'), atest = false; end | |
458 if ~io(pn).plists.isparam('scale'), atest = false; end | |
459 if ~io(pn).plists.isparam('f'), atest = false; end | |
460 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
461 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
462 % Check default value | |
463 if ~isequal(io(pn).plists.find('fsfcn'), 'f'), atest = false; end | |
464 if ~isequal(io(pn).plists.find('f1'), 1e-9), atest = false; end | |
465 if ~isequal(io(pn).plists.find('f2'), 10000), atest = false; end | |
466 if ~isequal(io(pn).plists.find('nf'), 1e3), atest = false; end | |
467 if ~isequal(io(pn).plists.find('scale'), 'log'), atest = false; end | |
468 if ~isEmptyDouble(io(pn).plists.find('f')), atest = false; end | |
469 if ~isequal(io(pn).plists.find('xunits'), 'Hz'), atest = false; end | |
470 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
471 % Check options | |
472 if ~isequal(io(pn).plists.getOptionsForParam('fsfcn'), {'f'}), atest = false; end | |
473 if ~isequal(io(pn).plists.getOptionsForParam('f1'), {1e-9}), atest = false; end | |
474 if ~isequal(io(pn).plists.getOptionsForParam('f2'), {1e4}), atest = false; end | |
475 if ~isequal(io(pn).plists.getOptionsForParam('nf'), {1e3}), atest = false; end | |
476 if ~isequal(io(pn).plists.getOptionsForParam('scale'), {'lin', 'log'}), atest = false; end | |
477 if ~isequal(io(pn).plists.getOptionsForParam('f'), {[]}), atest = false; end | |
478 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'Hz'}), atest = false; end | |
479 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
480 %%%%%%%%%% SET 'From Window' | |
481 pn = 17; | |
482 [atest, msg] = checkParamNumber(io, pn, 8); | |
483 % Check key | |
484 if ~io(pn).plists.isparam('name'), atest = false; end | |
485 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
486 if ~io(pn).plists.isparam('description'), atest = false; end | |
487 if ~io(pn).plists.isparam('win'), atest = false; end | |
488 if ~io(pn).plists.isparam('length'), atest = false; end | |
489 if ~io(pn).plists.isparam('psll'), atest = false; end | |
490 if ~io(pn).plists.isparam('levelorder'), atest = false; end | |
491 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
492 % Check default value | |
493 if ~strcmpi(io(pn).plists.find('win'), char(prefs.getMiscPrefs.getDefaultWindow)), atest = false; end | |
494 if ~isequal(io(pn).plists.find('yunits'), ''), atest = false; end | |
495 % Check options | |
496 if ~isequal(io(pn).plists.getOptionsForParam('win'), specwin.getTypes), atest = false; end | |
497 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
498 %%%%%%%%%% SET 'From Waveform' | |
499 pn = 18; | |
500 [atest, msg] = checkParamNumber(io, pn, 22); | |
501 % Check key | |
502 if ~io(pn).plists.isparam('name'), atest = false; end | |
503 if ~io(pn).plists.isparam('description'), atest = false; end | |
504 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
505 if ~io(pn).plists.isparam('waveform'), atest = false; end | |
506 if ~io(pn).plists.isparam('a'), atest = false; end | |
507 if ~io(pn).plists.isparam('f'), atest = false; end | |
508 if ~io(pn).plists.isparam('phi'), atest = false; end | |
509 if ~io(pn).plists.isparam('toff'), atest = false; end | |
510 if ~io(pn).plists.isparam('gaps'), atest = false; end | |
511 if ~io(pn).plists.isparam('type'), atest = false; end | |
512 if ~io(pn).plists.isparam('sigma'), atest = false; end | |
513 if ~io(pn).plists.isparam('f0'), atest = false; end | |
514 if ~io(pn).plists.isparam('f1'), atest = false; end | |
515 if ~io(pn).plists.isparam('t1'), atest = false; end | |
516 if ~io(pn).plists.isparam('bw'), atest = false; end | |
517 if ~io(pn).plists.isparam('duty'), atest = false; end | |
518 if ~io(pn).plists.isparam('width'), atest = false; end | |
519 if ~io(pn).plists.isparam('fs'), atest = false; end | |
520 if ~io(pn).plists.isparam('nsecs'), atest = false; end | |
521 if ~io(pn).plists.isparam('t0'), atest = false; end | |
522 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
523 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
524 % Check default value | |
525 if ~isequal(io(pn).plists.find('waveform'), 'sine wave'), atest = false; end | |
526 if ~isequal(io(pn).plists.find('a'), 1), atest = false; end | |
527 if ~isequal(io(pn).plists.find('f'), 1), atest = false; end | |
528 if ~isequal(io(pn).plists.find('phi'), 0), atest = false; end | |
529 if ~isequal(io(pn).plists.find('toff'), 0), atest = false; end | |
530 if ~isEmptyDouble(io(pn).plists.find('gaps')), atest = false; end | |
531 if ~isequal(io(pn).plists.find('type'), 'Normal'), atest = false; end | |
532 if ~isequal(io(pn).plists.find('sigma'), 1), atest = false; end | |
533 if ~isequal(io(pn).plists.find('f0'), 1), atest = false; end | |
534 if ~isEmptyDouble(io(pn).plists.find('f1')), atest = false; end | |
535 if ~isEmptyDouble(io(pn).plists.find('t1')), atest = false; end | |
536 if ~isEmptyDouble(io(pn).plists.find('bw')), atest = false; end | |
537 if ~isequal(io(pn).plists.find('duty'), 50), atest = false; end | |
538 if ~isequal(io(pn).plists.find('width'), 0.5), atest = false; end | |
539 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
540 if ~isEmptyDouble(io(pn).plists.find('nsecs')), atest = false; end | |
541 if ~isequal(double(time(io(pn).plists.getOptionsForParam('t0'))), 0), atest = false; end | |
542 if ~isequal(io(pn).plists.find('xunits'), 's'), atest = false; end | |
543 if ~isequal(io(pn).plists.find('yunits'), ''), atest = false; end | |
544 % Check options | |
545 if ~isequal(io(pn).plists.getOptionsForParam('waveform'), {'sine wave', 'noise', 'chirp', 'gaussian pulse', 'square wave', 'sawtooth'}), atest = false; end | |
546 if ~isequal(io(pn).plists.getOptionsForParam('a'), {1}), atest = false; end | |
547 if ~isequal(io(pn).plists.getOptionsForParam('f'), {1}), atest = false; end | |
548 if ~isequal(io(pn).plists.getOptionsForParam('phi'), {0}), atest = false; end | |
549 if ~isequal(io(pn).plists.getOptionsForParam('toff'), {0}), atest = false; end | |
550 if ~isequal(io(pn).plists.getOptionsForParam('gaps'), {[]}), atest = false; end | |
551 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'Normal', 'Uniform'}), atest = false; end | |
552 if ~isequal(io(pn).plists.getOptionsForParam('sigma'), {1}), atest = false; end | |
553 if ~isequal(io(pn).plists.getOptionsForParam('f0'), {1}), atest = false; end | |
554 if ~isequal(io(pn).plists.getOptionsForParam('f1'), {[]}), atest = false; end | |
555 if ~isequal(io(pn).plists.getOptionsForParam('t1'), {[]}), atest = false; end | |
556 if ~isequal(io(pn).plists.getOptionsForParam('bw'), {[]}), atest = false; end | |
557 if ~isequal(io(pn).plists.getOptionsForParam('duty'), {50}), atest = false; end | |
558 if ~isequal(io(pn).plists.getOptionsForParam('width'), {0.5}), atest = false; end | |
559 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
560 if ~isequal(io(pn).plists.getOptionsForParam('nsecs'), {[]}), atest = false; end | |
561 if ~isequal(io(pn).plists.getOptionsForParam('t0'), {'1970-01-01 00:00:00.000'}), atest = false; end | |
562 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'s'}), atest = false; end | |
563 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
564 %%%%%%%%%% SET 'From Polynomial' | |
565 pn = 19; | |
566 [atest, msg] = checkParamNumber(io, pn, 13); | |
567 % Check key | |
568 if ~io(pn).plists.isparam('name'), atest = false; end | |
569 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
570 if ~io(pn).plists.isparam('description'), atest = false; end | |
571 if ~io(pn).plists.isparam('polyval'), atest = false; end | |
572 if ~io(pn).plists.isparam('nsecs'), atest = false; end | |
573 if ~io(pn).plists.isparam('fs'), atest = false; end | |
574 if ~io(pn).plists.isparam('t0'), atest = false; end | |
575 if ~io(pn).plists.isparam('t'), atest = false; end | |
576 if ~io(pn).plists.isparam('x'), atest = false; end | |
577 if ~io(pn).plists.isparam('f'), atest = false; end | |
578 if ~io(pn).plists.isparam('type'), atest = false; end | |
579 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
580 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
581 % Check default value | |
582 if ~isEmptyDouble(io(pn).plists.find('polyval')), atest = false; end | |
583 if ~isEmptyDouble(io(pn).plists.find('nsecs')), atest = false; end | |
584 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
585 if ~isequal(io(pn).plists.find('t0'), '1970-01-01 00:00:00.000'), atest = false; end | |
586 if ~isEmptyDouble(io(pn).plists.find('t')), atest = false; end | |
587 if ~isEmptyDouble(io(pn).plists.find('x')), atest = false; end | |
588 if ~isEmptyDouble(io(pn).plists.find('f')), atest = false; end | |
589 if ~isequal(io(pn).plists.find('type'), 'tsdata'), atest = false; end | |
590 if ~isequal(io(pn).plists.find('xunits'), 's'), atest = false; end | |
591 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
592 % Check options | |
593 if ~isequal(io(pn).plists.getOptionsForParam('polyval'), {''}), atest = false; end | |
594 if ~isequal(io(pn).plists.getOptionsForParam('nsecs'), {[]}), atest = false; end | |
595 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
596 if ~isequal(io(pn).plists.getOptionsForParam('t0'), {'1970-01-01 00:00:00.000'}), atest = false; end | |
597 if ~isequal(io(pn).plists.getOptionsForParam('t'), {[]}), atest = false; end | |
598 if ~isequal(io(pn).plists.getOptionsForParam('x'), {[]}), atest = false; end | |
599 if ~isequal(io(pn).plists.getOptionsForParam('f'), {[]}), atest = false; end | |
600 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'tsdata', 'fsdata', 'xydata', 'cdata'}), atest = false; end | |
601 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'s'}), atest = false; end | |
602 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
603 %%%%%%%%%% SET 'From Pzmodel' | |
604 pn = 20; | |
605 [atest, msg] = checkParamNumber(io, pn, 9); | |
606 % Check key | |
607 if ~io(pn).plists.isparam('name'), atest = false; end | |
608 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
609 if ~io(pn).plists.isparam('description'), atest = false; end | |
610 if ~io(pn).plists.isparam('pzmodel'), atest = false; end | |
611 if ~io(pn).plists.isparam('nsecs'), atest = false; end | |
612 if ~io(pn).plists.isparam('fs'), atest = false; end | |
613 if ~io(pn).plists.isparam('t0'), atest = false; end | |
614 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
615 if ~io(pn).plists.isparam('yunits'), atest = false; end | |
616 % Check default value | |
617 if ~eq(io(pn).plists.find('pzmodel'), pzmodel(), ple1), atest = false; end | |
618 if ~isEmptyDouble(io(pn).plists.find('nsecs')), atest = false; end | |
619 if ~isEmptyDouble(io(pn).plists.find('fs')), atest = false; end | |
620 if ~isequal(io(pn).plists.find('t0'), '1970-01-01 00:00:00.000'), atest = false; end | |
621 if ~isequal(io(pn).plists.find('xunits'), 's'), atest = false; end | |
622 if ~isEmptyChar(io(pn).plists.find('yunits')), atest = false; end | |
623 % Check options | |
624 if ~isequal(io(pn).plists.getOptionsForParam('nsecs'), {[]}), atest = false; end | |
625 if ~isequal(io(pn).plists.getOptionsForParam('fs'), {[]}), atest = false; end | |
626 if ~isequal(io(pn).plists.getOptionsForParam('t0'), {'1970-01-01 00:00:00.000'}), atest = false; end | |
627 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'s'}), atest = false; end | |
628 if ~isequal(io(pn).plists.getOptionsForParam('yunits'), {''}), atest = false; end | |
629 %%%%%%%%%% SET 'From smodel' | |
630 pn = 21; | |
631 [atest, msg] = checkParamNumber(io, pn, 7); | |
632 % Check key | |
633 if ~io(pn).plists.isparam('name'), atest = false; end | |
634 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
635 if ~io(pn).plists.isparam('description'), atest = false; end | |
636 if ~io(pn).plists.isparam('model'), atest = false; end | |
637 if ~io(pn).plists.isparam('xunits'), atest = false; end | |
638 if ~io(pn).plists.isparam('x'), atest = false; end | |
639 if ~io(pn).plists.isparam('type'), atest = false; end | |
640 % Check default value | |
641 if ~eq(io(pn).plists.find('model'), smodel(), ple1), atest = false; end | |
642 if ~isequal(io(pn).plists.find('xunits'), 's'), atest = false; end | |
643 if ~isEmptyDouble(io(pn).plists.find('x')), atest = false; end | |
644 if ~isequal(io(pn).plists.find('type'), 'tsdata'), atest = false; end | |
645 % Check options | |
646 if ~isequal(io(pn).plists.getOptionsForParam('xunits'), {'s'}), atest = false; end | |
647 if ~isequal(io(pn).plists.getOptionsForParam('x'), {[]}), atest = false; end | |
648 if ~isequal(io(pn).plists.getOptionsForParam('type'), {'tsdata', 'fsdata', 'xydata', 'cdata'}), atest = false; end | |
649 | |
650 %%%%%%%%%% SET 'From pest' | |
651 pn = 22; | |
652 [atest, msg] = checkParamNumber(io, pn, 5); | |
653 % Check key | |
654 if ~io(pn).plists.isparam('name'), atest = false; end | |
655 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
656 if ~io(pn).plists.isparam('description'), atest = false; end | |
657 if ~io(pn).plists.isparam('pest'), atest = false; end | |
658 if ~io(pn).plists.isparam('parameter'), atest = false; end | |
659 % Check default value | |
660 if ~eq(io(pn).plists.find('pest'), []), atest = false; end | |
661 if ~isequal(io(pn).plists.find('parameter'), ''), atest = false; end | |
662 % Check options | |
663 if ~isequal(io(pn).plists.getOptionsForParam('pest'), {[]}), atest = false; end | |
664 if ~isequal(io(pn).plists.getOptionsForParam('parameter'), {''}), atest = false; end | |
665 %%%%%%%%%% SET 'From Parameter' | |
666 pn = 23; | |
667 [atest, msg] = checkParamNumber(io, pn, 5); | |
668 % Check key | |
669 if ~io(pn).plists.isparam('name'), atest = false; end | |
670 if ~io(pn).plists.isparam('plotinfo'), atest = false; end | |
671 if ~io(pn).plists.isparam('description'), atest = false; end | |
672 if ~io(pn).plists.isparam('parameter'), atest = false; end | |
673 if ~io(pn).plists.isparam('key'), atest = false; end | |
674 % Check default value | |
675 if ~isEmptyChar(io(pn).plists.find('parameter')), atest = false; end | |
676 if ~isEmptyChar(io(pn).plists.find('key')), atest = false; end | |
677 % Check options | |
678 if ~isequal(io(pn).plists.getOptionsForParam('parameter'), {''}), atest = false; end | |
679 if ~isequal(io(pn).plists.getOptionsForParam('key'), {''}), atest = false; end | |
680 end | |
681 % </AlgoCode> | |
682 else | |
683 atest = false; | |
684 end | |
685 | |
686 % Return a result structure | |
687 result = utp_prepare_result(atest, stest, dbstack, mfilename, msg); | |
688 end % END UTP_01 | |
689 | |
690 % check parameter number | |
691 function [atest, msg] = checkParamNumber(sets, setNum, paramNum) | |
692 atest = true; | |
693 msg = ''; | |
694 if sets(setNum).plists.nparams ~= paramNum | |
695 atest = false; | |
696 msg = sprintf('Set %d plist does not have %d parameters', setNum, paramNum); | |
697 end | |
698 end | |
699 | |
700 %% UTP_08 | |
701 | |
702 % <TestDescription> | |
703 % | |
704 % Tests that the ao method properly applies history to the | |
705 % ASCII-file constructor. | |
706 % | |
707 % </TestDescription> | |
708 function result = utp_08 | |
709 | |
710 % <SyntaxDescription> | |
711 % | |
712 % Test that the output can be processed back to an m-file. | |
713 % | |
714 % </SyntaxDescription> | |
715 | |
716 try | |
717 % <SyntaxCode> | |
718 fs = 5; | |
719 Nsecs = 2; | |
720 t = linspace(0, Nsecs-1/fs, Nsecs*fs); | |
721 x = randn(1,Nsecs*fs) + 2*sin(2*pi*45.*t); | |
722 out = [t;x].'; | |
723 | |
724 %---- Save data as ascii file | |
725 name = 'data'; | |
726 filename1 = sprintf('%s.txt', name); | |
727 save(filename1, 'out', '-ASCII', '-DOUBLE', '-TABS'); | |
728 filename2 = sprintf('%s.dat', name); | |
729 save(filename2, 'out', '-ASCII', '-DOUBLE', '-TABS'); | |
730 | |
731 out1 = ao(filename1); | |
732 out2 = ao(filename2); | |
733 mout1 = rebuild(out1); | |
734 mout2 = rebuild(out2); | |
735 % </SyntaxCode> | |
736 stest = true; | |
737 catch err | |
738 disp(err.message) | |
739 stest = false; | |
740 end | |
741 | |
742 % <AlgoDescription> | |
743 % | |
744 % 1) Check that the last entry in the history of 'out' corresponds to | |
745 % 'ao'. | |
746 % 2) Check that the rebuilt objects are the same as 'out1' and 'ouit2' | |
747 % | |
748 % </AlgoDescription> | |
749 | |
750 atest = true; | |
751 if stest | |
752 % <AlgoCode> | |
753 % Check the last step in the history of 'out' | |
754 if ~strcmp(out1.hist.methodInfo.mname, 'ao'), atest = false; end | |
755 if ~strcmp(out2.hist.methodInfo.mname, 'ao'), atest = false; end | |
756 % Check that the data-object is a cdata-object | |
757 if ~isa(out1.data, 'cdata'), atest = false; end | |
758 if ~isa(out2.data, 'cdata'), atest = false; end | |
759 % Check that output contains the right values | |
760 if ~isequal(out1.data.getY, out), atest = false; end | |
761 if ~isequal(out2.data.getY, out), atest = false; end | |
762 % Check the rebuilt object | |
763 if ~eq(mout1, out1, ple1), atest = false; end | |
764 if ~eq(mout2, out2, ple1), atest = false; end | |
765 % </AlgoCode> | |
766 % delete test file | |
767 delete(filename1); | |
768 delete(filename2); | |
769 else | |
770 atest = false; | |
771 end | |
772 | |
773 % Return a result structure | |
774 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
775 end % END UTP_08 | |
776 | |
777 | |
778 %% UTP_09 | |
779 | |
780 % <TestDescription> | |
781 % | |
782 % Tests that the ao method properly applies history to the complex | |
783 % ASCII-file constructor. | |
784 % | |
785 % </TestDescription> | |
786 function result = utp_09 | |
787 | |
788 % <SyntaxDescription> | |
789 % | |
790 % Test that the output can be processed back to an m-file. | |
791 % | |
792 % </SyntaxDescription> | |
793 | |
794 try | |
795 % <SyntaxCode> | |
796 a1 = ao(1:123, randn(123,1)+randn(123,1)*1i, plist('type', 'fsdata')); | |
797 filename1 = 'complex1.txt'; | |
798 filename2 = 'complex2.txt'; | |
799 filename3 = 'complex3.txt'; | |
800 filename4 = 'complex4.txt'; | |
801 filename5 = 'complex5.txt'; | |
802 | |
803 %---- Save: f, real, imag | |
804 export1 = [a1.x real(a1.y) imag(a1.y)]; | |
805 save(filename1, 'export1', '-ASCII', '-DOUBLE', '-TABS'); | |
806 %---- Save: f, abs, deg | |
807 export2 = [a1.x abs(a1.y) (180/pi) * (angle(a1.y))]; | |
808 save(filename2, 'export2', '-ASCII', '-DOUBLE', '-TABS'); | |
809 %---- Save: f, abs, rad | |
810 export3 = [a1.x abs(a1.y) angle(a1.y)]; | |
811 save(filename3, 'export3', '-ASCII', '-DOUBLE', '-TABS'); | |
812 %---- Save: f, dB, deg | |
813 export4 = [a1.x 20.*log10(abs(a1.y)) (180/pi) * (angle(a1.y))]; | |
814 save(filename4, 'export4', '-ASCII', '-DOUBLE', '-TABS'); | |
815 %---- Save: f, dB, rad | |
816 export5 = [a1.x angle(a1.y) 20.*log10(abs(a1.y)) angle(a1.y) 20.*log10(abs(a1.y)) angle(a1.y) 20.*log10(abs(a1.y))]; | |
817 save(filename5, 'export5', '-ASCII', '-DOUBLE', '-TABS'); | |
818 | |
819 out1 = ao(filename1, plist('complex_type', 'real/imag')); | |
820 out2 = ao(filename2, plist('complex_type', 'abs/deg')); | |
821 out3 = ao(filename3, plist('complex_type', 'abs/rad')); | |
822 out4 = ao(filename4, plist('complex_type', 'dB/deg')); | |
823 out5 = ao(filename5, plist('complex_type', 'dB/rad', 'columns', [1 7 4])); | |
824 | |
825 mout1 = rebuild(out1); | |
826 mout2 = rebuild(out2); | |
827 mout3 = rebuild(out3); | |
828 mout4 = rebuild(out4); | |
829 mout5 = rebuild(out5); | |
830 % </SyntaxCode> | |
831 stest = true; | |
832 catch err | |
833 disp(err.message) | |
834 stest = false; | |
835 end | |
836 | |
837 % <AlgoDescription> | |
838 % | |
839 % 1) Check that the last entry in the history of 'out' corresponds to | |
840 % 'ao'. | |
841 % 2) Check that the read data are correct | |
842 % 3) Check that the rebuilt object is the same as in 'out1..5' | |
843 % | |
844 % </AlgoDescription> | |
845 | |
846 atest = true; | |
847 TOL = 1e-14; | |
848 if stest | |
849 % <AlgoCode> | |
850 % Check the last step in the history of 'out' | |
851 if ~strcmp(out1.hist.methodInfo.mname, 'ao'), atest = false; end | |
852 if ~strcmp(out2.hist.methodInfo.mname, 'ao'), atest = false; end | |
853 if ~strcmp(out3.hist.methodInfo.mname, 'ao'), atest = false; end | |
854 if ~strcmp(out4.hist.methodInfo.mname, 'ao'), atest = false; end | |
855 if ~strcmp(out5.hist.methodInfo.mname, 'ao'), atest = false; end | |
856 % Check that output contains the correct values | |
857 % 'out1' -> f, real, imag | |
858 if ~isequal(out1.x, a1.x), atest = false; end | |
859 if any(abs(out1.y - a1.y) > TOL), atest = false; end | |
860 % 'out2' -> f, abs, deg | |
861 if ~isequal(out2.x, a1.x), atest = false; end | |
862 if any(abs(out2.y - a1.y) > TOL), atest = false; end | |
863 % 'out3' -> f, abs, rad | |
864 if ~isequal(out3.x, a1.x), atest = false; end | |
865 if any(abs(out3.y - a1.y) > TOL), atest = false; end | |
866 % 'out4' -> f, dB, deg | |
867 if ~isequal(out4.x, a1.x), atest = false; end | |
868 if any(abs(out4.y - a1.y) > TOL), atest = false; end | |
869 % 'out5' -> f, dB, rad | |
870 if ~isequal(out5.x, a1.x), atest = false; end | |
871 if any(abs(out5.y - a1.y) > TOL), atest = false; end | |
872 % Check the re-built objects | |
873 if ~eq(mout1, out1, ple2), atest = false; end | |
874 if ~eq(mout2, out2, ple2), atest = false; end | |
875 if ~eq(mout3, out3, ple2), atest = false; end | |
876 if ~eq(mout4, out4, ple2), atest = false; end | |
877 if ~eq(mout5, out5, ple2), atest = false; end | |
878 % </AlgoCode> | |
879 % delete test file | |
880 delete(filename1); | |
881 delete(filename2); | |
882 delete(filename3); | |
883 delete(filename4); | |
884 delete(filename5); | |
885 else | |
886 atest = false; | |
887 end | |
888 | |
889 % Return a result structure | |
890 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
891 end % END UTP_09 | |
892 | |
893 %% UTP_13 | |
894 | |
895 % <TestDescription> | |
896 % | |
897 % Tests that the ao method properly applies history to the vals constructor. | |
898 % | |
899 % </TestDescription> | |
900 function result = utp_13 | |
901 | |
902 % <SyntaxDescription> | |
903 % | |
904 % Test that the output can be processed back to an m-file. | |
905 % | |
906 % </SyntaxDescription> | |
907 | |
908 try | |
909 % <SyntaxCode> | |
910 vals = [1 2 3 4 5; 1 2 3 4 5]; | |
911 out = ao(vals); | |
912 mout = rebuild(out); | |
913 % </SyntaxCode> | |
914 stest = true; | |
915 catch err | |
916 disp(err.message) | |
917 stest = false; | |
918 end | |
919 | |
920 % <AlgoDescription> | |
921 % | |
922 % 1) Check that the last entry in the history of 'out' corresponds to | |
923 % 'ao'. | |
924 % 2) Check that the rebuilt object is the same as 'out'. | |
925 % | |
926 % </AlgoDescription> | |
927 | |
928 atest = true; | |
929 if stest | |
930 % <AlgoCode> | |
931 % Check the last step in the history of 'out' | |
932 if ~strcmp(out.hist.methodInfo.mname, 'ao'), atest = false; end | |
933 % Check the rebuilt object | |
934 if ~eq(mout, out, ple1), atest = false; end | |
935 % </AlgoCode> | |
936 else | |
937 atest = false; | |
938 end | |
939 | |
940 % Return a result structure | |
941 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
942 end % END UTP_13 | |
943 | |
944 %% UTP_15 | |
945 | |
946 % <TestDescription> | |
947 % | |
948 % Tests that the ao method properly applies history to the plist(fcn) constructor. | |
949 % | |
950 % </TestDescription> | |
951 function result = utp_15 | |
952 | |
953 % <SyntaxDescription> | |
954 % | |
955 % Test that the output can be processed back to an m-file. | |
956 % | |
957 % </SyntaxDescription> | |
958 | |
959 try | |
960 % <SyntaxCode> | |
961 fcn = 'complex(randn(100,1), randn(100,1))'; | |
962 out = ao(plist('fcn', fcn)); | |
963 mout = rebuild(out); | |
964 % </SyntaxCode> | |
965 stest = true; | |
966 catch err | |
967 disp(err.message) | |
968 stest = false; | |
969 end | |
970 | |
971 % <AlgoDescription> | |
972 % | |
973 % 1) Check that the last entry in the history of 'out' corresponds to | |
974 % 'ao'. | |
975 % 2) Check that the rebuilt object is the same as 'out'. | |
976 % | |
977 % </AlgoDescription> | |
978 | |
979 atest = true; | |
980 if stest | |
981 % <AlgoCode> | |
982 % Check the last step in the history of 'out' | |
983 if ~strcmp(out.hist.methodInfo.mname, 'ao'), atest = false; end | |
984 % Check values of the AO | |
985 if isreal(out.data.getY), atest = false; end | |
986 % Check the rebuilt object | |
987 if ~eq(mout, out, ple1), atest = false; end | |
988 % </AlgoCode> | |
989 else | |
990 atest = false; | |
991 end | |
992 | |
993 % Return a result structure | |
994 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
995 end % END UTP_15 | |
996 | |
997 | |
998 %% UTP_16 | |
999 | |
1000 % <TestDescription> | |
1001 % | |
1002 % Tests that the ao method properly applies history to the plist(vals) constructor. | |
1003 % | |
1004 % </TestDescription> | |
1005 function result = utp_16 | |
1006 | |
1007 % <SyntaxDescription> | |
1008 % | |
1009 % Test that the output can be processed back to an m-file. | |
1010 % | |
1011 % </SyntaxDescription> | |
1012 | |
1013 try | |
1014 % <SyntaxCode> | |
1015 vals = [1 2 3 4 5; 6 7 8 9 0]; | |
1016 out = ao(plist('vals', vals)); | |
1017 mout = rebuild(out); | |
1018 % </SyntaxCode> | |
1019 stest = true; | |
1020 catch err | |
1021 disp(err.message) | |
1022 stest = false; | |
1023 end | |
1024 | |
1025 % <AlgoDescription> | |
1026 % | |
1027 % 1) Check that the last entry in the history of 'out' corresponds to | |
1028 % 'ao'. | |
1029 % 2) Check that the rebuilt object is the same as 'out'. | |
1030 % | |
1031 % </AlgoDescription> | |
1032 | |
1033 atest = true; | |
1034 if stest | |
1035 % <AlgoCode> | |
1036 % Check the last step in the history of 'out' | |
1037 if ~strcmp(out.hist.methodInfo.mname, 'ao'), atest = false; end | |
1038 % Check values of the AO | |
1039 if ~eq(out.data.getY, vals), atest = false; end | |
1040 % Check the rebuilt object | |
1041 if ~eq(mout, out, ple1), atest = false; end | |
1042 % </AlgoCode> | |
1043 else | |
1044 atest = false; | |
1045 end | |
1046 | |
1047 % Return a result structure | |
1048 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1049 end % END UTP_16 | |
1050 | |
1051 | |
1052 %% UTP_17 | |
1053 | |
1054 % <TestDescription> | |
1055 % | |
1056 % Tests that the ao method properly applies history to the plist(x/y-vals) constructor. | |
1057 % | |
1058 % </TestDescription> | |
1059 function result = utp_17 | |
1060 | |
1061 % <SyntaxDescription> | |
1062 % | |
1063 % Test that the output can be processed back to an m-file. | |
1064 % | |
1065 % </SyntaxDescription> | |
1066 | |
1067 try | |
1068 % <SyntaxCode> | |
1069 xvals = 0:99; | |
1070 yvals = randn(100,1); | |
1071 out = ao(plist('xvals', xvals, 'yvals', yvals)); | |
1072 mout = rebuild(out); | |
1073 % </SyntaxCode> | |
1074 stest = true; | |
1075 catch err | |
1076 disp(err.message) | |
1077 stest = false; | |
1078 end | |
1079 | |
1080 % <AlgoDescription> | |
1081 % | |
1082 % 1) Check that the last entry in the history of 'out' corresponds to | |
1083 % 'ao'. | |
1084 % 2) Check that the rebuilt object is the same as 'out'. | |
1085 % | |
1086 % </AlgoDescription> | |
1087 | |
1088 atest = true; | |
1089 if stest | |
1090 % <AlgoCode> | |
1091 % Check the last step in the history of 'out' | |
1092 if ~strcmp(out.hist.methodInfo.mname, 'ao'), atest = false; end | |
1093 % Check values of the AO | |
1094 if ~eq(out.data.getX, xvals'), atest = false; end | |
1095 if ~eq(out.data.getY, yvals), atest = false; end | |
1096 % Check the rebuilt object | |
1097 if ~eq(mout, out, ple1), atest = false; end | |
1098 % </AlgoCode> | |
1099 else | |
1100 atest = false; | |
1101 end | |
1102 | |
1103 % Return a result structure | |
1104 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1105 end % END UTP_17 | |
1106 | |
1107 | |
1108 %% UTP_18 | |
1109 | |
1110 % <TestDescription> | |
1111 % | |
1112 % Tests that the ao method properly applies history to the plist(tsfcn) constructor. | |
1113 % | |
1114 % </TestDescription> | |
1115 function result = utp_18 | |
1116 | |
1117 % <SyntaxDescription> | |
1118 % | |
1119 % Test that the output can be processed back to an m-file. | |
1120 % | |
1121 % </SyntaxDescription> | |
1122 | |
1123 try | |
1124 % <SyntaxCode> | |
1125 tsfcn = 'sin(2*pi*7.433*t) + randn(size(t))'; | |
1126 out = ao(plist('tsfcn', tsfcn, 'nsecs', 10, 'fs', 12.3)); | |
1127 mout = rebuild(out); | |
1128 % </SyntaxCode> | |
1129 stest = true; | |
1130 catch err | |
1131 disp(err.message) | |
1132 stest = false; | |
1133 end | |
1134 | |
1135 % <AlgoDescription> | |
1136 % | |
1137 % 1) Check that the last entry in the history of 'out' corresponds to | |
1138 % 'ao'. | |
1139 % 2) Check that the rebuilt object is the same as 'out'. | |
1140 % | |
1141 % </AlgoDescription> | |
1142 | |
1143 atest = true; | |
1144 if stest | |
1145 % <AlgoCode> | |
1146 % Check the last step in the history of 'out' | |
1147 if ~strcmp(out.hist.methodInfo.mname, 'ao'), atest = false; end | |
1148 % Check the rebuilt object | |
1149 if ~eq(mout, out, ple1), atest = false; end | |
1150 % </AlgoCode> | |
1151 else | |
1152 atest = false; | |
1153 end | |
1154 | |
1155 % Return a result structure | |
1156 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1157 end % END UTP_18 | |
1158 | |
1159 | |
1160 %% UTP_19 | |
1161 | |
1162 % <TestDescription> | |
1163 % | |
1164 % Tests that the ao method properly applies history to the plist(fsfcn) constructor. | |
1165 % | |
1166 % </TestDescription> | |
1167 function result = utp_19 | |
1168 | |
1169 % <SyntaxDescription> | |
1170 % | |
1171 % Test that the output can be processed back to an m-file. | |
1172 % | |
1173 % </SyntaxDescription> | |
1174 | |
1175 try | |
1176 % <SyntaxCode> | |
1177 fsfcn1 = '1e-15.*(1e-3./f.^2 + 1e-10./f.^4)'; | |
1178 fsfcn2 = '1./f.^2'; | |
1179 out1 = ao(plist('fsfcn', fsfcn1, 'nf', 100)); | |
1180 out2 = ao(plist('fsfcn', fsfcn2, 'nf', 100, 'scale', 'lin')); | |
1181 mout1 = rebuild(out1); | |
1182 mout2 = rebuild(out2); | |
1183 % </SyntaxCode> | |
1184 stest = true; | |
1185 catch err | |
1186 disp(err.message) | |
1187 stest = false; | |
1188 end | |
1189 | |
1190 % <AlgoDescription> | |
1191 % | |
1192 % 1) Check that the last entry in the history of 'out' corresponds to | |
1193 % 'ao'. | |
1194 % 2) Check that the rebuilt objects are the same as 'out1' and 'out2' | |
1195 % | |
1196 % </AlgoDescription> | |
1197 | |
1198 atest = true; | |
1199 if stest | |
1200 % <AlgoCode> | |
1201 % Check the last step in the history of 'out' | |
1202 if ~strcmp(out1.hist.methodInfo.mname, 'ao'), atest = false; end | |
1203 if ~strcmp(out2.hist.methodInfo.mname, 'ao'), atest = false; end | |
1204 % Check the rebuilt object | |
1205 if ~eq(mout1, out1, ple1), atest = false; end | |
1206 if ~eq(mout2, out2, ple1), atest = false; end | |
1207 % </AlgoCode> | |
1208 else | |
1209 atest = false; | |
1210 end | |
1211 | |
1212 % Return a result structure | |
1213 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1214 end % END UTP_19 | |
1215 | |
1216 | |
1217 %% UTP_20 | |
1218 | |
1219 % <TestDescription> | |
1220 % | |
1221 % Tests that the ao method properly applies history to the plist(win) constructor. | |
1222 % | |
1223 % </TestDescription> | |
1224 function result = utp_20 | |
1225 | |
1226 % <SyntaxDescription> | |
1227 % | |
1228 % Test that the output can be processed back to an m-file. | |
1229 % | |
1230 % </SyntaxDescription> | |
1231 | |
1232 msg = ''; | |
1233 try | |
1234 % <SyntaxCode> | |
1235 win = specwin('Hamming', 10); | |
1236 out1 = ao(plist('win', win)); | |
1237 mout1 = rebuild(out1); | |
1238 out2 = ao(plist('win', 'Kaiser', 'length', 53, 'psll', 75)); | |
1239 mout2 = rebuild(out2); | |
1240 % </SyntaxCode> | |
1241 stest = true; | |
1242 catch err | |
1243 disp(err.message) | |
1244 msg = err.message; | |
1245 stest = false; | |
1246 end | |
1247 | |
1248 % <AlgoDescription> | |
1249 % | |
1250 % 1) Check that the last entry in the history of 'out' corresponds to 'ao'. | |
1251 % 2) Check that the rebuilt object is the same as 'out'. | |
1252 % | |
1253 % </AlgoDescription> | |
1254 | |
1255 atest = true; | |
1256 if stest | |
1257 % <AlgoCode> | |
1258 % Check the last step in the history of 'out' | |
1259 if ~strcmp(out1.hist.methodInfo.mname, 'ao'), atest = false; msg = 'last history step is not an ao constructor'; end | |
1260 if ~strcmp(out2.hist.methodInfo.mname, 'ao'), atest = false; msg = 'last history step is not an ao constructor'; end | |
1261 % Check data values | |
1262 if ~isequal(win.win.', out1.data.getY), atest = false; msg = 'Window values are different when rebuilt'; end | |
1263 % Check the rebuilt object | |
1264 if ~eq(mout1, out1, ple1), atest = false; msg = '1st rebuilt object is different'; end | |
1265 if ~eq(mout2, out2, ple1), atest = false; msg = '2nd rebuilt object is different'; end | |
1266 % </AlgoCode> | |
1267 else | |
1268 atest = false; | |
1269 end | |
1270 | |
1271 % Return a result structure | |
1272 result = utp_prepare_result(atest, stest, dbstack, mfilename, msg); | |
1273 end % END UTP_20 | |
1274 | |
1275 | |
1276 %% UTP_21 | |
1277 | |
1278 % <TestDescription> | |
1279 % | |
1280 % Tests that the ao method properly applies history to the plist(waveform) constructor. | |
1281 % | |
1282 % </TestDescription> | |
1283 function result = utp_21 | |
1284 | |
1285 % <SyntaxDescription> | |
1286 % | |
1287 % Test that the output can be processed back to an m-file. | |
1288 % | |
1289 % </SyntaxDescription> | |
1290 | |
1291 try | |
1292 % <SyntaxCode> | |
1293 nsecs = 10; | |
1294 fs = 10; | |
1295 % Sine wave | |
1296 pl_sin = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'sine wave' , 'phi', 30, 'f', 1.23); | |
1297 % Noise normal | |
1298 pl_noise_norm = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'noise' , 'type', 'Normal'); | |
1299 % Noise uniform | |
1300 pl_noise_uni = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'noise' , 'type', 'Uniform'); | |
1301 % Chirp | |
1302 pl_chirp = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'chirp' , 'f0', 1, 'f1', 50, 't1', 100); | |
1303 % Gaussian pulse | |
1304 pl_gauss = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'Gaussian pulse' , 'f0', 10, 'bw', 100); | |
1305 % Square wave | |
1306 pl_square = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'Square wave' , 'f', 1, 'duty', 50); | |
1307 % Sawtooth | |
1308 pl_saw = plist('nsecs', nsecs, 'fs', fs, 'waveform', 'Sawtooth' , 'width', 0.5, 'f', 1); | |
1309 out_sin = ao(pl_sin); | |
1310 out_nn = ao(pl_noise_norm); | |
1311 out_nu = ao(pl_noise_uni); | |
1312 out_chirp = ao(pl_chirp); | |
1313 out_gauss = ao(pl_gauss); | |
1314 out_square = ao(pl_square); | |
1315 out_saw = ao(pl_saw); | |
1316 | |
1317 mout_sin = rebuild(out_sin); | |
1318 mout_nn = rebuild(out_nn); | |
1319 mout_nu = rebuild(out_nu); | |
1320 mout_chirp = rebuild(out_chirp); | |
1321 mout_gauss = rebuild(out_gauss); | |
1322 mout_square = rebuild(out_square); | |
1323 mout_saw = rebuild(out_saw); | |
1324 % </SyntaxCode> | |
1325 stest = true; | |
1326 catch err | |
1327 disp(err.message) | |
1328 stest = false; | |
1329 end | |
1330 | |
1331 % <AlgoDescription> | |
1332 % | |
1333 % 1) Check that the last entry in the history of 'out' corresponds to | |
1334 % 'ao'. | |
1335 % 2) Check that the rebuilt objects are the same as 'out_...'. | |
1336 % | |
1337 % </AlgoDescription> | |
1338 | |
1339 atest = true; | |
1340 if stest | |
1341 % <AlgoCode> | |
1342 % Check the last step in the history of 'out' | |
1343 if ~strcmp(out_sin.hist.methodInfo.mname, 'ao'), atest = false; end | |
1344 if ~strcmp(out_nn.hist.methodInfo.mname, 'ao'), atest = false; end | |
1345 if ~strcmp(out_nu.hist.methodInfo.mname, 'ao'), atest = false; end | |
1346 if ~strcmp(out_chirp.hist.methodInfo.mname, 'ao'), atest = false; end | |
1347 if ~strcmp(out_gauss.hist.methodInfo.mname, 'ao'), atest = false; end | |
1348 if ~strcmp(out_square.hist.methodInfo.mname, 'ao'), atest = false; end | |
1349 if ~strcmp(out_saw.hist.methodInfo.mname, 'ao'), atest = false; end | |
1350 % Check the rebuilt object | |
1351 if ~eq(mout_sin, out_sin, ple1), atest = false; end | |
1352 if ~eq(mout_nn, out_nn, ple1), atest = false; end | |
1353 if ~eq(mout_nu, out_nu, ple1), atest = false; end | |
1354 if ~eq(mout_chirp, out_chirp, ple1), atest = false; end | |
1355 if ~eq(mout_gauss, out_gauss, ple1), atest = false; end | |
1356 if ~eq(mout_square, out_square, ple1), atest = false; end | |
1357 if ~eq(mout_saw, out_saw, ple1), atest = false; end | |
1358 % </AlgoCode> | |
1359 else | |
1360 atest = false; | |
1361 end | |
1362 | |
1363 % Return a result structure | |
1364 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1365 end % END UTP_21 | |
1366 | |
1367 | |
1368 | |
1369 %% UTP_23 | |
1370 | |
1371 % <TestDescription> | |
1372 % | |
1373 % Tests that the ao method properly applies history to the plist(polynomial) constructor. | |
1374 % | |
1375 % </TestDescription> | |
1376 function result = utp_23 | |
1377 | |
1378 % <SyntaxDescription> | |
1379 % | |
1380 % Test that the output can be processed back to an m-file. | |
1381 % | |
1382 % </SyntaxDescription> | |
1383 | |
1384 try | |
1385 % <SyntaxCode> | |
1386 fs = 10; | |
1387 Nsecs = 20; | |
1388 coeffs = ao([2 0 1]); | |
1389 out1 = ao(plist('polyval', coeffs, 'fs', fs, 'Nsecs', Nsecs)); | |
1390 out2 = ao(plist('polyval', coeffs.y, 'fs', fs, 'Nsecs', Nsecs)); | |
1391 mout1 = rebuild(out1); | |
1392 mout2 = rebuild(out2); | |
1393 % </SyntaxCode> | |
1394 stest = true; | |
1395 catch err | |
1396 disp(err.message) | |
1397 stest = false; | |
1398 end | |
1399 | |
1400 % <AlgoDescription> | |
1401 % | |
1402 % 1) Check that the last entry in the history of 'out' corresponds to | |
1403 % 'ao'. | |
1404 % 2) Check that the rebuilt object is the same as 'out'. | |
1405 % | |
1406 % </AlgoDescription> | |
1407 | |
1408 atest = true; | |
1409 if stest | |
1410 % <AlgoCode> | |
1411 % Check the last step in the history of 'out' | |
1412 if ~strcmp(out1.hist.methodInfo.mname, 'ao'), atest = false; end | |
1413 if ~strcmp(out2.hist.methodInfo.mname, 'ao'), atest = false; end | |
1414 % Check data values | |
1415 t = [0 : 1/fs : Nsecs-1/fs].'; | |
1416 y = polyval(coeffs.y,t); | |
1417 if ~isequal(out1.data.getY, y), atest = false; end | |
1418 if ~isequal(out2.data.getY, y), atest = false; end | |
1419 if ~isequal(out1.data.getX, t), atest = false; end | |
1420 if ~isequal(out2.data.getX, t), atest = false; end | |
1421 % Check the rebuilt object | |
1422 if ~eq(mout1, out1, ple1), atest = false; end | |
1423 if ~eq(mout2, out2, ple1), atest = false; end | |
1424 % </AlgoCode> | |
1425 else | |
1426 atest = false; | |
1427 end | |
1428 | |
1429 % Return a result structure | |
1430 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1431 end % END UTP_23 | |
1432 | |
1433 | |
1434 %% UTP_25 | |
1435 | |
1436 % <TestDescription> | |
1437 % | |
1438 % Tests that the ao method properly applies history to the plist(specwin) constructor. | |
1439 % Tests that the ao method properly uses the specwin values. | |
1440 % | |
1441 % </TestDescription> | |
1442 function result = utp_25 | |
1443 | |
1444 % <SyntaxDescription> | |
1445 % | |
1446 % Test that the output can be processed back to an m-file. | |
1447 % | |
1448 % </SyntaxDescription> | |
1449 | |
1450 stest = true; | |
1451 atest = true; | |
1452 msg = ''; | |
1453 | |
1454 % Test Kaiser window | |
1455 try | |
1456 % <SyntaxCode> | |
1457 win = specwin('kaiser', randi(1000, 1), 10); | |
1458 out = ao(win); | |
1459 mout = rebuild(out); | |
1460 % </SyntaxCode> | |
1461 catch err | |
1462 disp(err.message) | |
1463 msg = err.message; | |
1464 stest = false; | |
1465 end | |
1466 | |
1467 % <AlgoDescription> | |
1468 % | |
1469 % 1) Check that the last entry in the history of 'out' corresponds to | |
1470 % 'ao'. | |
1471 % 2) Check that the object contains the same data as the window. | |
1472 % 3) Check that the rebuilt object is the same as 'out'. | |
1473 % | |
1474 % </AlgoDescription> | |
1475 | |
1476 if stest | |
1477 % <AlgoCode> | |
1478 % Check the last step in the history of 'out' | |
1479 if ~strcmp(out.hist.methodInfo.mname, 'ao'), msg = 'last history step is not the ao constructor'; atest = false; end | |
1480 % Check data values | |
1481 if ~isequal(win.win', out.data.getY), msg = 'window values are different in the resulting ao'; atest = false; end | |
1482 % Check the rebuilt object | |
1483 if ~eq(mout, out, ple1), msg = ['the rebuilt object is not the same as the original: ' lastwarn]; atest = false; end | |
1484 % </AlgoCode> | |
1485 else | |
1486 atest = false; | |
1487 end | |
1488 | |
1489 win_list = specwin.getTypes; | |
1490 | |
1491 % Test standard windows | |
1492 for kk = 1:numel(win_list)-2 | |
1493 try | |
1494 % <SyntaxCode> | |
1495 win = specwin(win_list{kk}, randi(1000, 1)); | |
1496 out = ao(win); | |
1497 mout = rebuild(out); | |
1498 % </SyntaxCode> | |
1499 | |
1500 catch err | |
1501 disp(err.message) | |
1502 msg = err.message; | |
1503 stest = false; | |
1504 end | |
1505 | |
1506 % <AlgoDescription> | |
1507 % | |
1508 % 1) Check that the last entry in the history of 'out' corresponds to | |
1509 % 'ao'. | |
1510 % 2) Check that the object contains the same data as the window. | |
1511 % 3) Check that the rebuilt object is the same as 'out'. | |
1512 % | |
1513 % </AlgoDescription> | |
1514 | |
1515 if stest | |
1516 % <AlgoCode> | |
1517 % Check the last step in the history of 'out' | |
1518 if ~strcmp(out.hist.methodInfo.mname, 'ao'), msg = 'last history step is not the ao constructor'; atest = false; end | |
1519 % Check data values | |
1520 if ~isequal(win.win', out.data.getY), msg = 'window values are different in the resulting ao'; atest = false; end | |
1521 % Check the rebuilt object | |
1522 if ~eq(mout, out, ple1), msg = ['the rebuilt object is not the same as the original: ' lastwarn]; atest = false; end | |
1523 % </AlgoCode> | |
1524 else | |
1525 atest = false; | |
1526 end | |
1527 | |
1528 end | |
1529 | |
1530 % Return a result structure | |
1531 result = utp_prepare_result(atest, stest, dbstack, mfilename, msg); | |
1532 end % END UTP_25 | |
1533 | |
1534 | |
1535 %% UTP_26 | |
1536 | |
1537 % <TestDescription> | |
1538 % | |
1539 % Tests that the ao method properly applies history to the data-object constructor. | |
1540 % | |
1541 % </TestDescription> | |
1542 function result = utp_26 | |
1543 | |
1544 % <SyntaxDescription> | |
1545 % | |
1546 % Test that the output can be processed back to an m-file. | |
1547 % | |
1548 % </SyntaxDescription> | |
1549 | |
1550 try | |
1551 % <SyntaxCode> | |
1552 y = randn(100,1); | |
1553 m = randn(3,2); | |
1554 | |
1555 out1 = ao(cdata(m)); | |
1556 out2 = ao(fsdata(y)); | |
1557 out3 = ao(tsdata(y)); | |
1558 out4 = ao(xydata(y)); | |
1559 out5 = ao(xyzdata); | |
1560 % </SyntaxCode> | |
1561 stest = true; | |
1562 catch err | |
1563 disp(err.message) | |
1564 stest = false; | |
1565 end | |
1566 | |
1567 % <AlgoDescription> | |
1568 % | |
1569 % 1) Check that the last entry in the history of 'out' corresponds to | |
1570 % 'ao'. | |
1571 % | |
1572 % </AlgoDescription> | |
1573 | |
1574 atest = true; | |
1575 if stest | |
1576 % <AlgoCode> | |
1577 % Check the last step in the history of 'out' | |
1578 if ~strcmp(out1.hist.methodInfo.mname, 'ao'), atest = false; end | |
1579 if ~strcmp(out2.hist.methodInfo.mname, 'ao'), atest = false; end | |
1580 if ~strcmp(out3.hist.methodInfo.mname, 'ao'), atest = false; end | |
1581 if ~strcmp(out4.hist.methodInfo.mname, 'ao'), atest = false; end | |
1582 if ~strcmp(out5.hist.methodInfo.mname, 'ao'), atest = false; end | |
1583 % Check data values | |
1584 if ~isa(out1.data, 'cdata'), atest = false; end | |
1585 if ~isa(out2.data, 'fsdata'), atest = false; end | |
1586 if ~isa(out3.data, 'tsdata'), atest = false; end | |
1587 if ~isa(out4.data, 'xydata'), atest = false; end | |
1588 if ~isa(out5.data, 'xyzdata'), atest = false; end | |
1589 if ~eq(out1.data.getY, m), atest = false; end | |
1590 if ~eq(out2.data.getY, y), atest = false; end | |
1591 if ~eq(out3.data.getY, y), atest = false; end | |
1592 if ~eq(out4.data.getY, y), atest = false; end | |
1593 % </AlgoCode> | |
1594 else | |
1595 atest = false; | |
1596 end | |
1597 | |
1598 % Return a result structure | |
1599 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1600 end % END UTP_26 | |
1601 | |
1602 %% UTP_28 | |
1603 | |
1604 % <TestDescription> | |
1605 % | |
1606 % Tests that the ao method properly applies history to the x-vector, y-vector constructor. | |
1607 % | |
1608 % </TestDescription> | |
1609 function result = utp_28 | |
1610 | |
1611 % <SyntaxDescription> | |
1612 % | |
1613 % Test that the output can be processed back to an m-file. | |
1614 % | |
1615 % </SyntaxDescription> | |
1616 | |
1617 try | |
1618 % <SyntaxCode> | |
1619 x = 0:99; | |
1620 y = randn(100,1); | |
1621 | |
1622 out = ao(x, y); | |
1623 mout = rebuild(out); | |
1624 % </SyntaxCode> | |
1625 stest = true; | |
1626 catch err | |
1627 disp(err.message) | |
1628 stest = false; | |
1629 end | |
1630 | |
1631 % <AlgoDescription> | |
1632 % | |
1633 % 1) Check that the last entry in the history of 'out' corresponds to | |
1634 % 'ao'. | |
1635 % 2) Check that the rebuilt object is the same as 'out'. | |
1636 % | |
1637 % </AlgoDescription> | |
1638 | |
1639 atest = true; | |
1640 if stest | |
1641 % <AlgoCode> | |
1642 % Check the last step in the history of 'out' | |
1643 if ~strcmp(out.hist.methodInfo.mname, 'ao'), atest = false; end | |
1644 % Check data values | |
1645 if ~eq(out.data.getX, x'), atest = false; end | |
1646 if ~eq(out.data.getY, y), atest = false; end | |
1647 % Check the rebuilt object | |
1648 if ~eq(mout, out, ple1), atest = false; end | |
1649 % </AlgoCode> | |
1650 else | |
1651 atest = false; | |
1652 end | |
1653 | |
1654 % Return a result structure | |
1655 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1656 end % END UTP_28 | |
1657 | |
1658 | |
1659 %% UTP_29 | |
1660 | |
1661 % <TestDescription> | |
1662 % | |
1663 % Tests that the ao method properly applies history to the filename + | |
1664 % plist constructor. | |
1665 % | |
1666 % </TestDescription> | |
1667 function result = utp_29 | |
1668 | |
1669 % <SyntaxDescription> | |
1670 % | |
1671 % Test that the output can be processed back to an m-file. | |
1672 % | |
1673 % </SyntaxDescription> | |
1674 | |
1675 try | |
1676 % <SyntaxCode> | |
1677 %---- Make test file | |
1678 fs = 10; | |
1679 Nsecs = 10; | |
1680 t = linspace(0, Nsecs-1/fs, Nsecs*fs); | |
1681 x1 = randn(1,Nsecs*fs) + 2*sin(2*pi*45.*t); | |
1682 x2 = randn(1,Nsecs*fs) + 2*sin(2*pi*45.*t); | |
1683 | |
1684 %---- Save data as ascii file | |
1685 filename = 'data.txt'; | |
1686 fd = fopen(filename, 'w+'); | |
1687 % write header | |
1688 fprintf(fd, '// A comment that should be read appropriately.\n'); | |
1689 fprintf(fd, '// \n'); | |
1690 fprintf(fd, '// M Hewitson\n'); | |
1691 % write data | |
1692 for j=1:length(t) | |
1693 fprintf(fd, '%.17g\t%.17g\t%.17g\n', t(j), x1(j), x2(j)); | |
1694 end | |
1695 % close file | |
1696 fclose(fd); | |
1697 | |
1698 desc = 'ao from filename'; | |
1699 xunits = 's'; | |
1700 yunits = 'V'; | |
1701 | |
1702 pl = plist(... | |
1703 'description', desc,... | |
1704 'type', 'tsdata', ... | |
1705 'xunits', xunits, ... | |
1706 'yunits', yunits, ... | |
1707 'columns', [1 2 1 3], ... | |
1708 'comment_char', '//'); | |
1709 | |
1710 out = ao(filename, pl); | |
1711 mout = rebuild(out); | |
1712 % </SyntaxCode> | |
1713 stest = true; | |
1714 catch err | |
1715 disp(err.message) | |
1716 stest = false; | |
1717 end | |
1718 | |
1719 % <AlgoDescription> | |
1720 % | |
1721 % 1) Check that the last entry in the history of 'out' corresponds to | |
1722 % 'ao'. | |
1723 % 2) Check that the rebuilt object is the same as 'out'. | |
1724 % | |
1725 % </AlgoDescription> | |
1726 | |
1727 atest = true; | |
1728 if stest | |
1729 % <AlgoCode> | |
1730 % Check the last step in the history of 'out' | |
1731 if ~strcmp(out(1).hist.methodInfo.mname, 'ao'), atest = false; end | |
1732 if ~strcmp(out(2).hist.methodInfo.mname, 'ao'), atest = false; end | |
1733 % Check data values | |
1734 if ~isa(out(1).data, 'tsdata'), atest = false; end | |
1735 if ~isa(out(2).data, 'tsdata'), atest = false; end | |
1736 if any(abs(out(1).data.getX - t.') > TOL), atest = false; end | |
1737 if ~isequal(out(1).data.getY, x1.'), atest = false; end | |
1738 if any(abs(out(2).data.getX - t.') > TOL), atest = false; end | |
1739 if ~isequal(out(2).data.getY, x2.'), atest = false; end | |
1740 % Check the rebuilt object | |
1741 if ~eq(mout, out, ple1), atest = false; end | |
1742 % </AlgoCode> | |
1743 delete(filename); | |
1744 else | |
1745 atest = false; | |
1746 end | |
1747 | |
1748 % Return a result structure | |
1749 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1750 end % END UTP_29 | |
1751 | |
1752 | |
1753 %% UTP_30 | |
1754 | |
1755 % <TestDescription> | |
1756 % | |
1757 % Tests that the ao method properly applies history to the filename + | |
1758 % plist constructor. | |
1759 % | |
1760 % </TestDescription> | |
1761 function result = utp_30 | |
1762 | |
1763 % <SyntaxDescription> | |
1764 % | |
1765 % Test that the output can be processed back to an m-file. | |
1766 % | |
1767 % </SyntaxDescription> | |
1768 | |
1769 try | |
1770 % <SyntaxCode> | |
1771 %---- Make test file | |
1772 fs = 10; | |
1773 Nsecs = 10; | |
1774 t = linspace(0, Nsecs-1/fs, Nsecs*fs); | |
1775 x1 = .1*randn(1,Nsecs*fs) + 2*sin(2*pi*45.*t) + randn(1,Nsecs*fs)*1i; | |
1776 x2 = .1*randn(1,Nsecs*fs) + 2*sin(2*pi*45.*t) + randn(1,Nsecs*fs)*1i; | |
1777 | |
1778 %---- Save data as ascii file | |
1779 filename = 'complex.txt'; | |
1780 fd = fopen(filename, 'w+'); | |
1781 % write header | |
1782 fprintf(fd, '// A comment that should be read appropriately.\n'); | |
1783 fprintf(fd, '// \n'); | |
1784 fprintf(fd, '// M Hewitson\n'); | |
1785 % write data | |
1786 for j=1:length(t) | |
1787 | |
1788 %---- Save: f, abs, rad, abs, rad | |
1789 fprintf(fd, '%.17g\t%.17g\t%.17g\t%.17g\t%.17g\n', t(j), abs(x1(j)), angle(x1(j)), abs(x2(j)), angle(x2(j))); | |
1790 end | |
1791 % close file | |
1792 fclose(fd); | |
1793 | |
1794 desc = 'ao from complex data'; | |
1795 xunits = 'Hz'; | |
1796 yunits = 'V'; | |
1797 | |
1798 pl = plist(... | |
1799 'complex_type', 'abs/rad', ... | |
1800 'columns', [1 2 3 1 4 5], ... | |
1801 'type', 'xydata', ... | |
1802 'description', desc,... | |
1803 'xunits', xunits, ... | |
1804 'yunits', yunits, ... | |
1805 'comment_char', '//'); | |
1806 | |
1807 out = ao(filename, pl); | |
1808 mout = rebuild(out); | |
1809 % </SyntaxCode> | |
1810 stest = true; | |
1811 catch err | |
1812 disp(err.message) | |
1813 stest = false; | |
1814 end | |
1815 | |
1816 % <AlgoDescription> | |
1817 % | |
1818 % 1) Check that the last entry in the history of 'out' corresponds to | |
1819 % 'ao'. | |
1820 % 2) Check the read data | |
1821 % 3) Check that the rebuilt object is the same as 'out' | |
1822 % | |
1823 % </AlgoDescription> | |
1824 | |
1825 atest = true; | |
1826 if stest | |
1827 % <AlgoCode> | |
1828 % Check the last step in the history of 'out' | |
1829 if ~strcmp(out(1).hist.methodInfo.mname, 'ao'), atest = false; end | |
1830 if ~strcmp(out(2).hist.methodInfo.mname, 'ao'), atest = false; end | |
1831 % Check data values | |
1832 if ~isa(out(1).data, 'xydata'), atest = false; end | |
1833 if ~isa(out(2).data, 'xydata'), atest = false; end | |
1834 % 'out(1)' -> f, abs, rad | |
1835 if ~isequal(out(1).x, t.'), atest = false; end | |
1836 if any(abs(out(1).y - x1.') > TOL), atest = false; end | |
1837 if ~eq(out(1).yunits, unit(yunits)), atest = false; end | |
1838 if ~eq(out(1).xunits, unit(xunits)), atest = false; end | |
1839 if ~strcmp(out(1).description, desc), atest = false; end | |
1840 % 'out(2)' -> f, abs, rad | |
1841 if ~isequal(out(2).x, t.'), atest = false; end | |
1842 if any(abs(out(2).y - x2.') > TOL), atest = false; end | |
1843 if ~eq(out(2).yunits, unit(yunits)), atest = false; end | |
1844 if ~eq(out(2).xunits, unit(xunits)), atest = false; end | |
1845 if ~strcmp(out(2).description, desc), atest = false; end | |
1846 % Check the re-built object | |
1847 if ~eq(mout, out, ple1), atest = false; end | |
1848 % </AlgoCode> | |
1849 % delete test file | |
1850 delete(filename); | |
1851 else | |
1852 atest = false; | |
1853 end | |
1854 | |
1855 % Return a result structure | |
1856 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1857 end % END UTP_30 | |
1858 | |
1859 | |
1860 %% UTP_31 | |
1861 | |
1862 % <TestDescription> | |
1863 % | |
1864 % Tests that the ao method properly applies history to the filename + plist constructor. | |
1865 % | |
1866 % </TestDescription> | |
1867 function result = utp_31 | |
1868 | |
1869 % <SyntaxDescription> | |
1870 % | |
1871 % Test that the output can be processed back to an m-file. | |
1872 % | |
1873 % </SyntaxDescription> | |
1874 | |
1875 try | |
1876 % <SyntaxCode> | |
1877 fs = 10; | |
1878 Nsecs = 10; | |
1879 t0 = time('2008-02-15 14:00:00'); | |
1880 col = [2 3]; | |
1881 x1 = randn(1,Nsecs*fs); | |
1882 x2 = randn(1,Nsecs*fs); | |
1883 x3 = randn(1,Nsecs*fs); | |
1884 | |
1885 %---- Save data as ascii file | |
1886 filename = 'data.txt'; | |
1887 fd = fopen(filename, 'w+'); | |
1888 % write header | |
1889 fprintf(fd, '%% A comment that should be read appropriately.\n'); | |
1890 fprintf(fd, '%% \n'); | |
1891 fprintf(fd, '%% M Hewitson\n'); | |
1892 % write data | |
1893 for j=1:length(x1) | |
1894 fprintf(fd, '%.17g\t%.17g\t%.17g\n', x1(j), x2(j), x3(j)); | |
1895 end | |
1896 % close file | |
1897 fclose(fd); | |
1898 | |
1899 % Build plist | |
1900 desc = 'ao from filename'; | |
1901 xunits = 's'; | |
1902 yunits = {'V', 'V^2'}; | |
1903 | |
1904 pl = plist(... | |
1905 'description', desc,... | |
1906 'type', 'tsdata', ... | |
1907 'xunits', xunits, ... | |
1908 'yunits', yunits, ... | |
1909 'columns', col, ... | |
1910 'fs', fs, ... | |
1911 't0', {t0, t0+20}, ... | |
1912 'comment_char', '%'); | |
1913 | |
1914 out = ao(filename, pl); | |
1915 mout = rebuild(out); | |
1916 % </SyntaxCode> | |
1917 stest = true; | |
1918 catch err | |
1919 disp(err.message) | |
1920 stest = false; | |
1921 end | |
1922 | |
1923 % <AlgoDescription> | |
1924 % | |
1925 % 1) Check that the last entry in the history of 'out' corresponds to | |
1926 % 'ao'. | |
1927 % 2) Check that the rebuilt object is the same as 'out'. | |
1928 % | |
1929 % </AlgoDescription> | |
1930 | |
1931 atest = true; | |
1932 if stest | |
1933 % <AlgoCode> | |
1934 % Check the last step in the history of 'out' | |
1935 if ~strcmp(out(1).hist.methodInfo.mname, 'ao'), atest = false; end | |
1936 if ~strcmp(out(2).hist.methodInfo.mname, 'ao'), atest = false; end | |
1937 % Check data values | |
1938 if ~isa(out(1).data, 'tsdata'), atest = false; end | |
1939 if ~isa(out(2).data, 'tsdata'), atest = false; end | |
1940 if ~isequal(out(1).data.getY, x2.'), atest = false; end | |
1941 if ~isequal(out(2).data.getY, x3.'), atest = false; end | |
1942 if ~eq(unit(xunits), out(1).data.xunits), atest = false; end | |
1943 if ~eq(unit(yunits{1}), out(1).data.yunits), atest = false; end | |
1944 if ~eq(unit(xunits), out(2).data.xunits), atest = false; end | |
1945 if ~eq(unit(yunits{2}), out(2).data.yunits), atest = false; end | |
1946 if ~eq(out(1).data.t0, t0, ple1), atest = false; end | |
1947 if ~eq(out(2).data.t0, t0 + 20, ple1), atest = false; end | |
1948 if ~out(1).data.fs == fs, atest = false; end | |
1949 if ~out(2).data.fs == fs, atest = false; end | |
1950 % Check the rebuilt object | |
1951 if ~eq(mout, out, ple1), atest = false; end | |
1952 % </AlgoCode> | |
1953 % delete test file | |
1954 delete(filename) | |
1955 else | |
1956 atest = false; | |
1957 end | |
1958 | |
1959 % Return a result structure | |
1960 result = utp_prepare_result(atest, stest, dbstack, mfilename); | |
1961 end % END UTP_31 | |
1962 | |
1963 | |
1964 end |