comparison testing/utp_1.1/utps/rational/utp_rational_eq.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_RATIONAL_EQ a set of UTPs for the rational/eq method
2 %
3 % M Hewitson 06-08-08
4 %
5 % $Id: utp_rational_eq.m,v 1.7 2011/04/19 18:14:02 ingo Exp $
6 %
7
8 % <MethodDescription>
9 %
10 % The eq() method of the rational class ra1 == ra2 compares each element of
11 % a rational object with the corresponding element of an second rational
12 % object and returns a logical 1 (true) where ra1 and ra2 are equal, or
13 % logical 0 (false) where they are not equal.
14 %
15 % </MethodDescription>
16
17 function results = utp_rational_eq(varargin)
18
19 % Check the inputs
20 if nargin == 0
21
22 % Some keywords
23 class = 'rational';
24 mthd = 'eq';
25
26 results = [];
27 disp('******************************************************');
28 disp(['**** Running UTPs for ' class '/' mthd]);
29 disp('******************************************************');
30
31 % Test RATIONAL objects
32 [ra1,ra2,ra3,rav,ram] = get_test_objects_rational;
33
34 % Exception list for the UTPs:
35 [ple1,ple2,ple3,ple4,ple5,ple6] = get_test_ples();
36
37 % Run the tests
38 results = [results utp_01]; % getInfo call
39 results = [results utp_02]; % Vector input
40 results = [results utp_03]; % Matrix input
41 results = [results utp_04]; % List input
42 results = [results utp_05]; % Test with mixed input
43 results = [results utp_06]; % Test history is working
44 results = [results utp_07]; % Test with the exception list 'name'
45 results = [results utp_08]; % Test with the exception list 'iunits'
46 results = [results utp_09]; % Test with the exception list 'ounits'
47 results = [results utp_10]; % Test exception list in a plist
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 number of SETS
112 if numel(io(2).sets) ~= 1, atest = false; end
113 % Check all Sets
114 if ~any(strcmpi(io(2).sets, 'Default')), atest = false; end
115 % SET 'Default'
116 % Check key
117 if ~io(3).plists.isparam('Exceptions'), atest = false; end
118 if ~io(3).plists.isparam('Tol'), atest = false; end
119 % Check default value
120 if ~isequal(io(3).plists.find('Exceptions'), {}), atest = false; end
121 if ~isequal(io(3).plists.find('Tol'), eps(1)), atest = false; end
122 % Check options
123 if ~isequal(io(3).plists.getOptionsForParam('Exceptions'), {{}}), atest = false; end
124 if ~isequal(io(3).plists.getOptionsForParam('Tol'), {eps(1)}), atest = false; end
125 end
126 % </AlgoCode>
127 else
128 atest = false;
129 end
130
131 % Return a result structure
132 result = utp_prepare_result(atest, stest, dbstack, mfilename);
133 end % END UTP_01
134
135 %% UTP_02
136
137 % <TestDescription>
138 %
139 % Tests that the eq method works with a vector of RATIONAL objects as input.
140 %
141 % </TestDescription>
142 function result = utp_02
143
144 % <SyntaxDescription>
145 %
146 % Test that the eq method works for a vector of RATIONAL objects as input.
147 % Test the positive and the negative case.
148 %
149 % </SyntaxDescription>
150
151 try
152 % <SyntaxCode>
153 pa = ra3.setName('my name');
154 rav1 = [ra1, ra2, ra3];
155 rav2 = [ra1, ra2, pa];
156 out1 = eq(rav1, rav1);
157 out2 = eq(rav1, rav2);
158 % </SyntaxCode>
159 stest = true;
160 catch err
161 disp(err.message)
162 stest = false;
163 end
164
165 % <AlgoDescription>
166 %
167 % 1) Check the output of the eq function.
168 %
169 % </AlgoDescription>
170
171 atest = true;
172 if stest
173 % <AlgoCode>
174 if out1 ~= 1, atest = false; end
175 if out2 ~= 0, atest = false; end
176 % </AlgoCode>
177 else
178 atest = false;
179 end
180
181 % Return a result structure
182 result = utp_prepare_result(atest, stest, dbstack, mfilename);
183 end % END UTP_02
184
185 %% UTP_03
186
187 % <TestDescription>
188 %
189 % Tests that the eq method works with a matrix of RATIONAL objects as input.
190 %
191 % </TestDescription>
192 function result = utp_03
193
194 % <SyntaxDescription>
195 %
196 % Test that the eq method works for a matrix of RATIONAL objects as input.
197 % Test the positive and the negative case.
198 %
199 % </SyntaxDescription>
200
201 try
202 % <SyntaxCode>
203 pa = ra3.setName('my name');
204 ram1 = [ra1, ra2, ra3, ra1, ra2, ra3];
205 ram2 = [ra3, ra2, pa; ra1, ra2, ra3];
206 out1 = eq(ram1, ram1);
207 out2 = eq(ram1, ram2);
208 % </SyntaxCode>
209 stest = true;
210 catch err
211 disp(err.message)
212 stest = false;
213 end
214
215 % <AlgoDescription>
216 %
217 % 1) Check the output of the eq function.
218 %
219 % </AlgoDescription>
220
221 atest = true;
222 if stest
223 % <AlgoCode>
224 if out1 ~= 1, atest = false; end
225 if out2 ~= 0, atest = false; 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 eq method works with a list of RATIONAL objects as input.
240 %
241 % </TestDescription>
242 function result = utp_04
243
244 % <SyntaxDescription>
245 %
246 % The eq method doesn't works for a list of RATIONAL objects as input.
247 % Nothing to do.
248 %
249 % </SyntaxDescription>
250
251 try
252 % <SyntaxCode>
253 % </SyntaxCode>
254 stest = true;
255 catch err
256 disp(err.message)
257 stest = false;
258 end
259
260 % <AlgoDescription>
261 %
262 % </AlgoDescription>
263
264 atest = true;
265 if stest
266 % <AlgoCode>
267 % </AlgoCode>
268 else
269 atest = false;
270 end
271
272 % Return a result structure
273 result = utp_prepare_result(atest, stest, dbstack, mfilename);
274 end % END UTP_04
275
276 %% UTP_05
277
278 % <TestDescription>
279 %
280 % Tests that the eq method works with a mix of different shaped RATIONAL objects
281 % as input.
282 %
283 % </TestDescription>
284 function result = utp_05
285
286 % <SyntaxDescription>
287 %
288 % The eq method doesn't works for a list of RATIONAL objects as input.
289 % Nothing to do.
290 %
291 % </SyntaxDescription>
292
293 try
294 % <SyntaxCode>
295 % </SyntaxCode>
296 stest = true;
297 catch err
298 disp(err.message)
299 stest = false;
300 end
301
302 % <AlgoDescription>
303 %
304 % </AlgoDescription>
305
306 atest = true;
307 if stest
308 % <AlgoCode>
309 % </AlgoCode>
310 else
311 atest = false;
312 end
313
314 % Return a result structure
315 result = utp_prepare_result(atest, stest, dbstack, mfilename);
316 end % END UTP_05
317
318 %% UTP_06
319
320 % <TestDescription>
321 %
322 % Tests that the eq method properly applies history.
323 %
324 % </TestDescription>
325 function result = utp_06
326
327 % <SyntaxDescription>
328 %
329 % The eq method doesn't change the RATIONAL object, thus will no history added.
330 % Nothing to do
331 %
332 % </SyntaxDescription>
333
334 try
335 % <SyntaxCode>
336 % </SyntaxCode>
337 stest = true;
338 catch err
339 disp(err.message)
340 stest = false;
341 end
342
343 % <AlgoDescription>
344 %
345 % </AlgoDescription>
346
347 atest = true;
348 if stest
349 % <AlgoCode>
350 % </AlgoCode>
351 else
352 atest = false;
353 end
354
355 % Return a result structure
356 result = utp_prepare_result(atest, stest, dbstack, mfilename);
357 end % END UTP_06
358
359 %% UTP_07
360
361 % <TestDescription>
362 %
363 % Test the eq method with an exception list.
364 % With the LTPDA toolbox 2.0 it is only possible to test the exception
365 % list with properties where a public set method exist.
366 %
367 % </TestDescription>
368 function result = utp_07
369
370 % <SyntaxDescription>
371 %
372 % Test the eq method with the exception 'name'. Use the option
373 % 'internal' to suppress the history. It is necessary to add 'created'
374 % to the exception list because 'pa' is created at an other time.
375 %
376 % </SyntaxDescription>
377
378 try
379 % <SyntaxCode>
380 pa = testCallerIsMethod(@setName, ra3, 'my name');
381 out1 = eq(pa, ra3);
382 out2 = eqLocal(pa, ra3, 'name');
383 out3 = eqLocal(pa, ra3, 'rational/name');
384 out4 = eq(pa.hist, ra3.hist);
385 % </SyntaxCode>
386 stest = true;
387 catch err
388 disp(err.message)
389 stest = false;
390 end
391
392 % <AlgoDescription>
393 %
394 % 1) Check the output.
395 %
396 % </AlgoDescription>
397
398 atest = true;
399 if stest
400 % <AlgoCode>
401 if out1 ~= 0, atest = false; end
402 if out2 ~= 1, atest = false; end
403 if out3 ~= 1, atest = false; end
404 if out4 ~= 1, atest = false; end
405 % </AlgoCode>
406 else
407 atest = false;
408 end
409
410 % Return a result structure
411 result = utp_prepare_result(atest, stest, dbstack, mfilename);
412 end % END UTP_07
413
414 %% UTP_08
415
416 % <TestDescription>
417 %
418 % Test the eq method with an exception list.
419 % With the LTPDA toolbox 2.0 it is only possible to test the exception list
420 % with properties where a public set method exist.
421 %
422 % </TestDescription>
423 function result = utp_08
424
425 % <SyntaxDescription>
426 %
427 % Test the eq method with the exception 'iunits'. Use the option 'internal'
428 % to suppress the history. It is necessary to add 'created' to the exception
429 % list because 'pa' is created at an other time.
430 %
431 % </SyntaxDescription>
432
433 try
434 % <SyntaxCode>
435 pa = testCallerIsMethod(@setIunits, ra3, unit('Hz'));
436 out1 = eq(pa, ra3);
437 out2 = eqLocal(pa, ra3, 'iunits');
438 out3 = eqLocal(pa, ra3, 'rational/iunits');
439 out4 = eq(pa.hist, ra3.hist);
440 % </SyntaxCode>
441 stest = true;
442 catch err
443 disp(err.message)
444 stest = false;
445 end
446
447 % <AlgoDescription>
448 %
449 % 1) Check the output.
450 %
451 % </AlgoDescription>
452
453 atest = true;
454 if stest
455 % <AlgoCode>
456 if out1 ~= 0, atest = false; end
457 if out2 ~= 1, atest = false; end
458 if out3 ~= 1, atest = false; end
459 if out4 ~= 1, atest = false; end
460 % </AlgoCode>
461 else
462 atest = false;
463 end
464
465 % Return a result structure
466 result = utp_prepare_result(atest, stest, dbstack, mfilename);
467 end % END UTP_08
468
469 %% UTP_09
470
471 % <TestDescription>
472 %
473 % Test the eq method with an exception list.
474 % With the LTPDA toolbox 2.0 it is only possible to test the exception
475 % list with properties where a public set method exist.
476 %
477 % </TestDescription>
478 function result = utp_09
479
480 % <SyntaxDescription>
481 %
482 % Test the eq method with the exception 'ounits'. Use the option
483 % 'internal' to suppress the history. It is necessary to add 'created'
484 % to the exception list because 'pa' is created at an other time.
485 %
486 % </SyntaxDescription>
487
488 try
489 % <SyntaxCode>
490 pa = testCallerIsMethod(@setOunits, ra3, unit('V'));
491 out1 = eq(pa, ra3);
492 out2 = eqLocal(pa, ra3, 'ounits');
493 out3 = eqLocal(pa, ra3, 'rational/ounits');
494 out4 = eq(pa.hist, ra3.hist);
495 % </SyntaxCode>
496 stest = true;
497 catch err
498 disp(err.message)
499 stest = false;
500 end
501
502 % <AlgoDescription>
503 %
504 % 1) Check the output.
505 %
506 % </AlgoDescription>
507
508 atest = true;
509 if stest
510 % <AlgoCode>
511 if out1 ~= 0, atest = false; end
512 if out2 ~= 1, atest = false; end
513 if out3 ~= 1, atest = false; end
514 if out4 ~= 1, atest = false; end
515 % </AlgoCode>
516 else
517 atest = false;
518 end
519
520 % Return a result structure
521 result = utp_prepare_result(atest, stest, dbstack, mfilename);
522 end % END UTP_09
523
524 %% UTP_10
525
526 % <TestDescription>
527 %
528 % Test the eq method with an exception list which is in a plist.
529 %
530 % </TestDescription>
531 function result = utp_10
532
533 % <SyntaxDescription>
534 %
535 % Test that the eq method uses the exception list in a plist.
536 %
537 % </SyntaxDescription>
538
539 try
540 % <SyntaxCode>
541 pa = testCallerIsMethod(@setName, ra3, 'my name');
542 pl = plist('Exceptions', {'name', 'UUID'});
543 out1 = eq(pa, ra3);
544 out2 = eq(pa, ra3, pl);
545 out3 = eq(pa, ra3, pl);
546 out4 = eq(pa.hist, ra3.hist);
547 % </SyntaxCode>
548 stest = true;
549 catch err
550 disp(err.message)
551 stest = false;
552 end
553
554 % <AlgoDescription>
555 %
556 % 1) Check the output.
557 %
558 % </AlgoDescription>
559
560 atest = true;
561 if stest
562 % <AlgoCode>
563 % Check the shape of the output data
564 if out1 ~= 0, atest = false; end
565 if out2 ~= 1, atest = false; end
566 if out3 ~= 1, atest = false; end
567 if out4 ~= 1, atest = false; end
568 % </AlgoCode>
569 else
570 atest = false;
571 end
572
573 % Return a result structure
574 result = utp_prepare_result(atest, stest, dbstack, mfilename);
575 end % END UTP_10
576
577 function res = eqLocal(obj1, obj2, ex)
578 e = ple1.find('EXCEPTIONS');
579 ple = plist('EXCEPTIONS', [e {ex}]);
580
581 res = eq(obj1, obj2, ple);
582 end
583 end