Mercurial > octave-nkf
comparison test/classes/classes.tst @ 16070:e603ce23f20c
Fix and improve functions related to class precedence (bug #38290)
* libinterp/octave-value/ov-class.cc(inferiorto): Use only one call to
set_class_relationship() and properly use the returned value. Rewrite
for clarity (fewer braces, shorter lines).
(superiorto): Rewrite similarly to inferiorto() for clarity.
* libinterp/interpfcn/symtab.cc(symbol_table::set_class_relationship):
Reduce code redundancy using a call to is_superiorto(). Add a comment
to make it clear that a new entry in the precedence table is created
if sup_class is not already there.
(symbol_table::is_superiorto): Rewrite more concisely. Add a comment.
* test/classes/@CPrecedenceTester1, test/classes/@CPrecedenceTester2,
test/classes/@CPrecedenceTester3: New classes for precedence tests.
* test/classes/@Snork/tattack.m: New method for precedence tests.
* test/classes/classes.tst: Add precedence tests.
author | Julien Bect <julien.bect@supelec.fr> |
---|---|
date | Tue, 29 Jan 2013 17:55:53 +0100 |
parents | 1af8d21608b7 |
children | 797ac81586d1 |
comparison
equal
deleted
inserted
replaced
16035:999f8257313b | 16070:e603ce23f20c |
---|---|
314 %% See bug #38170 (http://savannah.gnu.org/bugs/?38170) | 314 %% See bug #38170 (http://savannah.gnu.org/bugs/?38170) |
315 %!test s = [s1 s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2])); | 315 %!test s = [s1 s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2])); |
316 %!xtest s = [s1 x2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2])); | 316 %!xtest s = [s1 x2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2])); |
317 %!xtest s = [x1 s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2])); | 317 %!xtest s = [x1 s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2])); |
318 | 318 |
319 %%%%%%%%%%%%%%%%%%%%%%%% | |
320 %% Testing precedence %% | |
321 %%%%%%%%%%%%%%%%%%%%%%%% | |
322 | |
323 %% default: leftmost object wins | |
324 %!shared A, B | |
325 %!test A = Snork(rand(2)); | |
326 %!test B = CPrecedenceTester1(); % no call to inferiorto/superiorto | |
327 %!assert (isequal (tattack (A, B), 'Snork')) | |
328 %!assert (isequal (tattack (B, A), 'CPrecedenceTester1')) % idem | |
329 | |
330 %!shared A, B | |
331 %!test A = Snork(rand(2)); | |
332 %!test B = CPrecedenceTester2(1); % CPrecedenceTester2 > Snork | |
333 %!assert (isequal (tattack (A, B), 'CPrecedenceTester2')) | |
334 %!assert (isequal (tattack (B, A), 'CPrecedenceTester2')) | |
335 %% Trying to change to CPrecendenceTester < Snork | |
336 %!error D = CPrecedenceTester2(2); | |
337 | |
338 %!shared A, B | |
339 %!test A = Snork(rand(2)); | |
340 %!test B = CPrecedenceTester3(2); % CPrecedenceTester3 < Snork | |
341 %!assert (isequal (tattack (A, B), 'Snork')) | |
342 %!assert (isequal (tattack (B, A), 'Snork')) | |
343 %% Trying to change to CPrecendenceTester3 > Snork | |
344 %!error D = CPrecedenceTester3(1); |