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);