comparison testing/utp_1.1/utps/pzmodel/utp_pzmodel_string.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_PZMODEL_STRING a set of UTPs for the pzmodel/string method
2 %
3 % M Hewitson 06-08-08
4 %
5 % $Id: utp_pzmodel_string.m,v 1.2 2009/07/23 18:56:38 ingo Exp $
6 %
7
8 % <MethodDescription>
9 %
10 % The string method of the pzmodel class writes a command string that can be
11 % used to recreate the input object(s). But the object should not have more than
12 % one history step.
13 %
14 % </MethodDescription>
15
16 function results = utp_pzmodel_string(varargin)
17
18 % Check the inputs
19 if nargin == 0
20
21 % Some keywords
22 class = 'pzmodel';
23 mthd = 'string';
24
25 results = [];
26 disp('******************************************************');
27 disp(['**** Running UTPs for ' class '/' mthd]);
28 disp('******************************************************');
29
30 pl1 = plist('gain', 3, 'poles', {1, [2 3]}, 'zeros', pz(8), 'iunits', 's^-2', 'ounits', 'mm');
31 pz1 = pzmodel(pl1);
32 pl2 = plist('poles', pz(8,3), 'zeros', [pz(2) pz(4-2i)]);
33 pz2 = pzmodel(pl2);
34 pzv = [pz1, pz2, pz1];
35 pzm = [pz1, pz2, pz1; pz1, pz2, pz1];
36
37 % Exception list for the UTPs:
38 [ple1,ple2,ple3,ple4,ple5,ple6] = get_test_ples();
39
40 % Run the tests
41 results = [results utp_01]; % getInfo call
42 results = [results utp_02]; % Vector input
43 results = [results utp_03]; % Matrix input
44 results = [results utp_04]; % List input
45 results = [results utp_05]; % Test with mixed input
46 results = [results utp_06]; % Test history is working
47 results = [results utp_07]; % Negative test: The object have more than one history step.
48
49 disp('Done.');
50 disp('******************************************************');
51
52 elseif nargin == 1 % Check for UTP functions
53 if strcmp(varargin{1}, 'isutp')
54 results = 1;
55 else
56 results = 0;
57 end
58 else
59 error('### Incorrect inputs')
60 end
61
62 %% UTP_01
63
64 % <TestDescription>
65 %
66 % Tests that the getInfo call works for this method.
67 %
68 % </TestDescription>
69 function result = utp_01
70
71
72 % <SyntaxDescription>
73 %
74 % Test that the getInfo call works for no sets, all sets, and each set
75 % individually.
76 %
77 % </SyntaxDescription>
78
79 try
80 % <SyntaxCode>
81 % Call for no sets
82 io(1) = eval([class '.getInfo(''' mthd ''', ''None'')']);
83 % Call for all sets
84 io(2) = eval([class '.getInfo(''' mthd ''')']);
85 % Call for each set
86 for kk=1:numel(io(2).sets)
87 io(kk+2) = eval([class '.getInfo(''' mthd ''', ''' io(2).sets{kk} ''')']);
88 end
89 % </SyntaxCode>
90 stest = true;
91 catch err
92 disp(err.message)
93 stest = false;
94 end
95
96 % <AlgoDescription>
97 %
98 % 1) Check that getInfo call returned an minfo object in all cases.
99 % 2) Check that all plists have the correct parameters.
100 %
101 % </AlgoDescription>
102
103 atest = true;
104 if stest
105 % <AlgoCode>
106 % check we have minfo objects
107 if isa(io, 'minfo')
108 % SET 'None'
109 if ~isempty(io(1).sets), atest = false; end
110 if ~isempty(io(1).plists), atest = false; end
111 % Check all Sets
112 if ~any(strcmpi(io(2).sets, 'Default')), atest = false; end
113 if numel(io(2).plists) ~= numel(io(2).sets), atest = false; end
114 % SET 'Default'
115 if io(3).plists.nparams ~= 0, atest = false; end
116 % Check key
117 % Check default value
118 % Check options
119 end
120 % </AlgoCode>
121 else
122 atest = false;
123 end
124
125 % Return a result structure
126 result = utp_prepare_result(atest, stest, dbstack, mfilename);
127 end % END UTP_01
128
129 %% UTP_02
130
131 % <TestDescription>
132 %
133 % Tests that the string method works with a vector of PZMODEL objects as input.
134 %
135 % </TestDescription>
136 function result = utp_02
137
138 % <SyntaxDescription>
139 %
140 % Test that the string method works for a vector of PZMODEL objects as input.
141 %
142 % </SyntaxDescription>
143
144 try
145 % <SyntaxCode>
146 out = string(pzv);
147 rout = eval(out);
148 % </SyntaxCode>
149 stest = true;
150 catch err
151 disp(err.message)
152 stest = false;
153 end
154
155 % <AlgoDescription>
156 %
157 % 1) Check that the output is a executable string.
158 % 2) Check the correct number of rout
159 % 3) Check the rebuild objects.
160 %
161 % </AlgoDescription>
162
163 atest = true;
164 if stest
165 % <AlgoCode>
166 % Check the output
167 if ~ischar(out), atest = false; end;
168 if ~isa(rout, 'pzmodel'), atest = false; end
169 if numel(rout) ~= numel(pzv), atest = false; end
170 for kk = 1:numel(pzv)
171 if eq(rout(kk), pzv(kk)), atest = false; end
172 end
173 % </AlgoCode>
174 else
175 atest = false;
176 end
177
178 % Return a result structure
179 result = utp_prepare_result(atest, stest, dbstack, mfilename);
180 end % END UTP_02
181
182 %% UTP_03
183
184 % <TestDescription>
185 %
186 % Tests that the string method works with a matrix of PZMODEL objects as input.
187 %
188 % </TestDescription>
189 function result = utp_03
190
191 % <SyntaxDescription>
192 %
193 % Test that the string method works for a matrix of PZMODEL objects as input.
194 %
195 % </SyntaxDescription>
196
197 try
198 % <SyntaxCode>
199 out = string(pzm);
200 rout = eval(out);
201 % </SyntaxCode>
202 stest = true;
203 catch err
204 disp(err.message)
205 stest = false;
206 end
207
208 % <AlgoDescription>
209 %
210 % 1) Check that the output is a executable string.
211 % 2) Check the correct number of rout
212 % 3) Check the rebuild objects.
213 %
214 % </AlgoDescription>
215
216 atest = true;
217 if stest
218 % <AlgoCode>
219 % Check the output
220 if ~ischar(out), atest = false; end
221 if ~isa(rout, 'pzmodel'), atest = false; end
222 if numel(rout) ~= numel(pzm), atest = false; end
223 for kk = 1:numel(pzm)
224 if eq(rout(kk), pzm(kk)), atest = false; end
225 end
226 % </AlgoCode>
227 else
228 atest = false;
229 end
230
231 % Return a result structure
232 result = utp_prepare_result(atest, stest, dbstack, mfilename);
233 end % END UTP_03
234
235 %% UTP_04
236
237 % <TestDescription>
238 %
239 % Tests that the string method works with a list of PZMODEL objects as input.
240 %
241 % </TestDescription>
242 function result = utp_04
243
244 % <SyntaxDescription>
245 %
246 % Test that the string method works for a list of PZMODEL objects as input.
247 %
248 % </SyntaxDescription>
249
250 try
251 % <SyntaxCode>
252 out = string(pz1,pz2);
253 rout = eval(out);
254 % </SyntaxCode>
255 stest = true;
256 catch err
257 disp(err.message)
258 stest = false;
259 end
260
261 % <AlgoDescription>
262 %
263 % 1) Check that the output is a executable string.
264 % 2) Check the correct number of rout
265 % 3) Check the rebuild objects.
266 %
267 % </AlgoDescription>
268
269 atest = true;
270 pzin = [pz1, pz2];
271 if stest
272 % <AlgoCode>
273 % Check the output
274 if ~ischar(out), atest = false; end
275 if ~isa(rout, 'pzmodel'), atest = false; end
276 if numel(rout) ~= numel(pzin), atest = false; end
277 for kk = 1:numel(pzin)
278 if eq(rout(kk), pzin(kk)), atest = false; end
279 end
280 % </AlgoCode>
281 else
282 atest = false;
283 end
284
285 % Return a result structure
286 result = utp_prepare_result(atest, stest, dbstack, mfilename);
287 end % END UTP_04
288
289 %% UTP_05
290
291 % <TestDescription>
292 %
293 % Tests that the string method works with a mix of different shaped PZMODEL objects
294 % as input.
295 %
296 % </TestDescription>
297 function result = utp_05
298
299 % <SyntaxDescription>
300 %
301 % Test that the string method works with an input of matrices and vectors
302 % and single PZMODEL objects.
303 %
304 % </SyntaxDescription>
305
306 try
307 % <SyntaxCode>
308 out = string(pz1,pzm,pz2);
309 rout = eval(out);
310 % </SyntaxCode>
311 stest = true;
312 catch err
313 disp(err.message)
314 stest = false;
315 end
316
317 % <AlgoDescription>
318 %
319 % 1) Check that the output is a executable string.
320 % 2) Check the correct number of rout
321 % 3) Check the rebuild objects.
322 %
323 % </AlgoDescription>
324
325 atest = true;
326 pzin = [pz1, reshape(pzm, 1, []), pz2];
327 if stest
328 % <AlgoCode>
329 % Check the output
330 if ~ischar(out), atest = false; end
331 if ~isa(rout, 'pzmodel'), atest = false; end
332 if numel(rout) ~= numel(pzin), atest = false; end
333 for kk = 1:numel(pzin)
334 if eq(rout(kk), pzin(kk)), atest = false; end
335 end
336 % </AlgoCode>
337 else
338 atest = false;
339 end
340
341 % Return a result structure
342 result = utp_prepare_result(atest, stest, dbstack, mfilename);
343 end % END UTP_05
344
345 %% UTP_06
346
347 % <TestDescription>
348 %
349 % Tests that the string method properly applies history.
350 %
351 % </TestDescription>
352 function result = utp_06
353
354 % <SyntaxDescription>
355 %
356 % The method string doesn't change the data, thus it is not possible to check
357 % the history. Nothing to do.
358 %
359 % </SyntaxDescription>
360
361 try
362 % <SyntaxCode>
363 % </SyntaxCode>
364 stest = true;
365 catch err
366 disp(err.message)
367 stest = false;
368 end
369
370 % <AlgoDescription>
371 %
372 % </AlgoDescription>
373
374 atest = true;
375 if stest
376 % <AlgoCode>
377 % </AlgoCode>
378 else
379 atest = false;
380 end
381
382 % Return a result structure
383 result = utp_prepare_result(atest, stest, dbstack, mfilename);
384 end % END UTP_06
385
386 %% UTP_07
387
388 % <TestDescription>
389 %
390 % Tests that the string method doesn't work if the PZMODEL object have more
391 % than one history step.
392 %
393 % </TestDescription>
394 function result = utp_07
395
396 % <SyntaxDescription>
397 %
398 % The method string throws an error because the input object have more than
399 % one history step.
400 %
401 % </SyntaxDescription>
402
403 try
404 % <SyntaxCode>
405 pz3 = pzmodel(3, pz(5), pz(2+1i));
406 pz3.setName('Second history step');
407 out = pz3.string();
408 % </SyntaxCode>
409 stest = false;
410 catch err
411 stest = true;
412 end
413
414 % <AlgoDescription>
415 %
416 % </AlgoDescription>
417
418 atest = true;
419 if stest
420 % <AlgoCode>
421 % </AlgoCode>
422 else
423 atest = false;
424 end
425
426 % Return a result structure
427 result = utp_prepare_result(atest, stest, dbstack, mfilename);
428 end % END UTP_07
429
430 end