annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
1 ## Copyright (C) 2013 Julien Bect
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 13695
diff changeset
2 ## Copyright (C) 2009-2012 Robert T. Short
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
3 ##
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
4 ## This file is part of Octave.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
5 ##
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
6 ## Octave is free software; you can redistribute it and/or modify it
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
7 ## under the terms of the GNU General Public License as published by
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
8 ## the Free Software Foundation; either version 3 of the License, or (at
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
9 ## your option) any later version.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
10 ##
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
11 ## Octave is distributed in the hope that it will be useful, but
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
14 ## General Public License for more details.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
15 ##
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
16 ## You should have received a copy of the GNU General Public License
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
17 ## along with Octave; see the file COPYING. If not, see
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
18 ## <http://www.gnu.org/licenses/>.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
19
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
20 %% Test script for legacy OOP.
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
21 %% Requires the path to contain the test classes.
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
22 %%
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
23 %% Note: This script and all classes are also intended to run
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
24 %% in MATLAB to test compatibility. Don't break that!
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
25 %%
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
26 %% Note(JBect, 2013/01/27) : in order to ease to process of testing
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
27 %% Matlab compatibility, the syntax assert(observed, expected) should
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
28 %% be avoided. I use assert(isequal(observed, expected) instead.
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
29 %%
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
30 %% To Do: This script tests to ensure that things done correctly work
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
31 %% corrrectly. It should also check that things done incorrectly
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
32 %% error properly.
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
33 %%
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
34 %% The classes used for the tests reside in the test directory.
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
35 %%
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
36 %% The classes provide the ability to test most of the major features
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
37 %% of the legacy OOP facilities. There are a number of classes, mostly
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
38 %% kind of the same, that create a hierarchy.
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
39
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
40 %% Test the Snork class. The Snork class has a number of the standard
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
41 %% methods that the others don't so we can test indexing and other
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
42 %% features.
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
43 %!shared snk, snk1, snk2
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
44 %!test snk = Snork();
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
45 %! assert (isequal (gick (snk), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
46 %! assert (isequal (snk.gick, 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
47 %! assert (isequal (snk(2), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
48 %! assert (isequal (snk{end}, 3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
49 %!test snk = gick (snk, 2);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
50 %! assert (isequal (gick (snk), 2));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
51 %!test snk = set (snk, 'gick', 7);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
52 %! assert (isequal (get (snk, 'gick'), 7));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
53 %!test snk.gick = 4;
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
54 %! assert (isequal (gick (snk),4));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
55 %! snk(1) = 3;
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
56 %!test snk{end} = 9;
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
57 %! assert (isequal (cack (snk), [3 1 2 9]));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
58 %! assert (isequal (getStash (snk), 1)); % Check private functions.
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
59 %! assert (isobject (snk));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
60 %! assert (isequal (class (snk), 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
61 %! assert (isa (snk, 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
62 %! assert (~isa (snk, 'Sneetch'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
63 %! assert (ismethod (snk, 'gick'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
64 %! assert (~ismethod (snk, 'bletch'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
65 %! assert (exist ('snk') == 1);
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
66 %! assert (exist ('blink') == 0);
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
67 %!test snk1 = Snork(snk);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
68 %! assert (isequal (class (snk1), 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
69 %! assert (isequal (gick (snk1), 4));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
70 %!test snk2 = Snork(-3);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
71 %! assert (isequal (class (snk2), 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
72 %! assert (isequal (gick (snk2), -3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
73 %!test x = [1 2 3 4];
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
74 %! assert (isequal (x(snk), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
75
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
76 %% x = methods ('Snork'); % Need to test the methods function.
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
77 %% save temp snk;
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
78 %% load temp % This load causes a segfault.
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
79 %% assert (isequal (cack(snk), [-1 -2 -3 -4])); % This is a major bug!
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
80
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
81 %% The Spork class is a near clone of Snork but without as many standard
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
82 %% methods. We are testing no new octave features, but this is makes
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
83 %% sure that we haven't bollixed up the Spork class if we should make
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
84 %% changes. We use Spork in the class hierarchy.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
85 %!shared sprk
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
86 %!test sprk = Spork();
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
87 %! assert (isequal (geek (sprk), 1));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
88 %!test sprk = geek (sprk, 3);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
89 %! assert (isequal (geek (sprk), 3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
90 %!test sprk = set (sprk,'geek',7);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
91 %! assert (isequal (get (sprk, 'geek'), 7));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
92 %! assert (isequal (class (sprk), 'Spork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
93 %! assert (isa (sprk, 'Spork'));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
94
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
95 %% The Blork class is a near clone of Snork but without as many standard
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
96 %% methods. We are testing no new octave features, but this is makes
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
97 %% sure that we haven't bollixed up the Blork class if we should make
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
98 %% changes. We use Blork in the class hierarchy.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
99 %!shared blrk
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
100 %!test blrk = Blork();
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
101 %! assert (isequal (bleek(blrk), 1));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
102 %!test blrk = bleek (blrk, 3);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
103 %! assert (isequal (bleek (blrk), 3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
104 %!test blrk = set (blrk, 'bleek', 13);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
105 %! assert (isequal (get (blrk, 'bleek'), 13));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
106 %! assert (isequal (class (blrk), 'Blork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
107 %! assert (isa (blrk, 'Blork'));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
108
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
109 %% The Cork class is a near clone of Snork but without as many standard
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
110 %% methods. We are testing no new octave features, but this is makes
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
111 %% sure that we haven't bollixed up the Cork class if we should make
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
112 %% changes. We use Cork in the class hierarchy.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
113 %!shared crk
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
114 %!test crk = Cork(23);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
115 %! assert (isequal (click(crk), 23));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
116 %!test crk = click(crk,3);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
117 %! assert (isequal (click(crk), 3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
118 %!test crk = set (crk, 'click', 13);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
119 %! assert (isequal (get (crk, 'click'), 13));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
120 %! assert (isequal (class (crk), 'Cork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
121 %! assert (isa (crk, 'Cork'));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
122
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
123 %% The Dork class tests single inheritance.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
124 %!shared drk
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
125 %!test drk = Dork();
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
126 %! assert (isequal (gack (drk),0));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
127 %!test drk = gack (drk,-2);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
128 %! assert (isequal (gack (drk),-2));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
129 %!test drk = gick (drk,2);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
130 %! assert (isequal (gick (drk),2));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
131 %!test drk = set (drk, 'gick',3, 'gack',-3);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
132 %! assert (isequal (get (drk, 'gick'), 3));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
133 %! assert (isequal (get (drk, 'gack'), -3));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
134 %! assert (isequal (class (drk), 'Dork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
135 %! assert (isa (drk, 'Dork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
136 %! assert (isa (drk, 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
137 %! assert (isequal (getStash (drk), 2));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
138 %!test drk1 = Dork(drk);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
139 %! assert (isequal (class (drk1), 'Dork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
140 %! assert (isa (drk1, 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
141 %! assert (isequal (gick (drk1), 3));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
142 %! assert (isequal (gack (drk1), -3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
143 %!test drk2 = Dork(-4, 4);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
144 %! assert (isequal (class (drk2), 'Dork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
145 %! assert (isa (drk2, 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
146 %! assert (isequal (gick (drk2), -4));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
147 %! assert (isequal (gack (drk2), 4));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
148
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
149 %% The Pork class is essentially a clone of Dork. It is used as part
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
150 %% of the multiple inheritance test.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
151 %!shared prk, drk
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
152 %!test prk = Pork();
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
153 %! assert (isequal (geek (prk), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
154 %! assert (isequal (gurk (prk), 0));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
155 %!test prk = gurk (prk,-3);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
156 %! assert (isequal (gurk (prk), -3));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
157 %!test prk = geek (prk,9);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
158 %! assert (isequal (geek (prk), 9));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
159 %! assert (isequal (class (prk), 'Pork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
160 %! assert (isa (prk, 'Pork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
161 %! assert (isa (prk, 'Spork'));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
162 %!test drk = Dork(); % Precedence.
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
163 %! assert (isequal (bling (drk, prk), 2));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
164 %! assert (isequal (bling (prk, drk), 2));
16030
1af8d21608b7 rename all test files in the test directory from test_X.m to X.tst
John W. Eaton <jwe@octave.org>
parents: 16014
diff changeset
165
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
166 %% The Gork class tests aggregation and multiple inheritance.
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
167 %!shared grk
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
168 %!test grk = Gork();
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
169 %! assert (isequal (gick (grk), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
170 %! assert (isequal (geek (grk), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
171 %! assert (isequal (gack (grk), 0));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
172 %! assert (isequal (gurk (grk), 0));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
173 %! assert (isequal (bleek (grk), 1));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
174 %! assert (isequal (gark(grk), -2));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
175 %! assert (isequal (click (cork (grk)), 17));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
176 %! assert (isequal (class (cork (grk)), 'Cork'));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
177 %!test grk = gick (grk, 3);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
178 %!test grk = geek (grk, 4);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
179 %!test grk = gack (grk, -9);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
180 %!test grk = gurk (grk, -8);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
181 %!test grk = bleek (grk, -7);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
182 %!test grk = gark (grk, -6);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
183 %!test grk = cork (grk, click (cork (grk), 23));
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
184 %! assert (isequal (gick (grk), 3));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
185 %! assert (isequal (geek (grk), 4));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
186 %! assert (isequal (gack (grk), -9));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
187 %! assert (isequal (gurk (grk), -8));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
188 %! assert (isequal (bleek (grk), -7));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
189 %! assert (isequal (gark (grk), -6));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
190 %! assert (isequal (click (cork (grk)), 23));
9381
f9ab19428cd8 * run-octave.in: Exclude @-files from path. Remove CVS exclusions.
Robert T. Short <octave@phaselockedsystems.com>
parents:
diff changeset
191 %!test
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
192 %! cork1 = Cork(13);
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
193 %! grk = set (grk, 'gick', -5, 'gack', -6, 'gark', -7, 'cork', cork1);
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
194 %! assert (isequal (get (grk, 'gick'), -5));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
195 %! assert (isequal (get (grk, 'gack'), -6));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
196 %! assert (isequal (get (grk, 'gark'), -7));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
197 %! assert (isequal (click(get (grk, 'cork')), 13));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
198 %!test grk = set (grk, 'cork', 12);
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
199 %! assert (isequal (click(get (grk, 'cork')),12));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
200 %! assert (isequal (class (cork(grk)), 'Cork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
201 %! assert (isequal (class (grk), 'Gork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
202 %! assert (isa (grk, 'Gork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
203 %! assert (isa (grk, 'Dork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
204 %! assert (isa (grk, 'Pork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
205 %! assert (isa (grk, 'Blork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
206 %! assert (isa (grk, 'Snork'));
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
207 %! assert (isa (grk, 'Spork'));
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
208
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
210 %% Testing (some) overloaded operators %%
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
211 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
212
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
213 %% Common variables for testing overloaded operators
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
214 %!shared x1, x2, x3, s1, s2, s3
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
215 %! x1 = 1 + rand(3); s1 = Snork(x1);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
216 %! x2 = 1 + rand(3); s2 = Snork(x2);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
217 %! x3 = diag([1 2 3]); s3 = Snork(x3);
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
218
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
219 %% Test overloaded plus (+) and uplus (unitary +) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
220 %!test s = s1 + s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 + x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
221 %!test s = s1 + x2; assert (isa (s, 'Snork') && isequal (s.gick, x1 + x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
222 %!test s = x1 + s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 + x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
223 %!test s = +s1; assert (isequal (s, s1));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
224
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
225 %% Test overloaded minus (-) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
226 %!test s = s1 - s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 - x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
227 %!test s = s1 - x2; assert (isa (s, 'Snork') && isequal (s.gick, x1 - x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
228 %!test s = x1 - s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 - x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
229 %!test s = -s1; assert (isequal (s, Snork(-x1)));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
230
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
231 %% Test overloaded mtimes (*) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
232 %!test s = s1 * s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 * x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
233 %!test s = s1 * x2; assert (isa (s, 'Snork') && isequal (s.gick, x1 * x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
234 %!test s = x1 * s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 * x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
235
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
236 %% Test overloaded times (.*) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
237 %!test s = s1 .* s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .* x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
238 %!test s = s1 .* x2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .* x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
239 %!test s = x1 .* s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .* x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
240
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
241 %% Test overloaded mpower (^) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
242 %!test s = s1 ^ 3; assert (isa (s, 'Snork') && isequal (s.gick, x1 ^ 3));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
243 %!error <mpower Snork!!!> s = s1 ^ s1;
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
244 %!error <mpower Snork!!!> s = 20 ^ s1;
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
245
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
246 %% Test overloaded power (.^) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
247 %!test s = s1 .^ 2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .^ 2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
248 %!error <power Snork!!!> s = s1 .^ s1;
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
249 %!error <power Snork!!!> s = 20 .^ s1;
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
250
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
251 %% Test overloaded rdivide (./) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
252 %!test s = s1 ./ s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 ./ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
253 %!test s = s1 ./ x2; assert (isa (s, 'Snork') && isequal (s.gick, x1 ./ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
254 %!test s = x1 ./ s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 ./ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
255
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
256 %% Test overloaded ldivide (.\) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
257 %!test s = s1 .\ s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .\ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
258 %!test s = s1 .\ x2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .\ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
259 %!test s = x1 .\ s2; assert (isa (s, 'Snork') && isequal (s.gick, x1 .\ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
260
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
261 %% Test overloaded mrdivide (/) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
262 %!test s = s1 / s3; assert (isa (s, 'Snork') && isequal (s.gick, x1 / x3));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
263 %!test s = s1 / x3; assert (isa (s, 'Snork') && isequal (s.gick, x1 / x3));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
264 %!test s = x1 / s3; assert (isa (s, 'Snork') && isequal (s.gick, x1 / x3));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
265
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
266 %% Test overloaded mldivide (\) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
267 %!test s = s3 \ s2; assert (isa (s, 'Snork') && isequal (s.gick, x3 \ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
268 %!test s = s3 \ x2; assert (isa (s, 'Snork') && isequal (s.gick, x3 \ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
269 %!test s = x3 \ s2; assert (isa (s, 'Snork') && isequal (s.gick, x3 \ x2));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
270
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
271 %% Test overloaded eq (==) for the Snork class
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
272 %!assert (s1 == s1)
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
273 %!assert (s1 == x1)
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
274 %!assert (x1 == s1)
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
275 %!assert (~(s1 == (s1 + 1)))
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
276 %!assert (~(s1 == (x1 + 1)))
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
277 %!assert (~(x1 == (s1 + 1)))
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
278
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
279 %% Test overloaded ne (~=) for the Snork class
16014
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
280 %!assert (~(s1 ~= s1))
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
281 %!assert (~(s1 ~= x1))
980f79a7bb55 test_classes.m: Use Octave coding conventions.
Rik <rik@octave.org>
parents: 15985
diff changeset
282 %!assert (~(x1 ~= s1))
15985
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
283 %!assert (s1 ~= (s1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
284 %!assert (x1 ~= (s1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
285 %!assert (s1 ~= (x1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
286
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
287 %% Test overloaded lt (<) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
288 %!assert (s1 < (s1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
289 %!assert (s1 < (x1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
290 %!assert (x1 < (s1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
291
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
292 %% Test overloaded gt (>) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
293 %!assert (s1 > (s1 - 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
294 %!assert (s1 > (x1 - 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
295 %!assert (x1 > (s1 - 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
296
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
297 %% Test overloaded lt (<=) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
298 %!assert (s1 <= (s1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
299 %!assert (s1 <= (x1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
300 %!assert (x1 <= (s1 + 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
301
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
302 %% Test overloaded gt (>=) for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
303 %!assert (s1 >= (s1 - 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
304 %!assert (s1 >= (x1 - 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
305 %!assert (x1 >= (s1 - 1))
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
306
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
307 %% Test overloaded vertcat() for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
308 %% See bug #38170 (http://savannah.gnu.org/bugs/?38170)
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
309 %!test s = [s1; s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1; x2]));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
310 %!xtest s = [s1; x2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1; x2]));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
311 %!xtest s = [x1; s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1; x2]));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
312
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
313 %% Test overloaded horzcat() for the Snork class
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
314 %% See bug #38170 (http://savannah.gnu.org/bugs/?38170)
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
315 %!test s = [s1 s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2]));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
316 %!xtest s = [s1 x2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2]));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
317 %!xtest s = [x1 s2]; assert (isa (s, 'Snork') && isequal (s.gick, [x1 x2]));
f75ffcc82acb Added tests for the legacy class system.
Julien Bect <julien.bect@supelec.fr>
parents: 14138
diff changeset
318
16070
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
319 %%%%%%%%%%%%%%%%%%%%%%%%
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
320 %% Testing precedence %%
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
321 %%%%%%%%%%%%%%%%%%%%%%%%
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
322
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
323 %% default: leftmost object wins
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
324 %!shared A, B
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
325 %!test A = Snork(rand(2));
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
326 %!test B = CPrecedenceTester1(); % no call to inferiorto/superiorto
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
327 %!assert (isequal (tattack (A, B), 'Snork'))
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
328 %!assert (isequal (tattack (B, A), 'CPrecedenceTester1')) % idem
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
329
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
330 %!shared A, B
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
331 %!test A = Snork(rand(2));
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
332 %!test B = CPrecedenceTester2(1); % CPrecedenceTester2 > Snork
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
333 %!assert (isequal (tattack (A, B), 'CPrecedenceTester2'))
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
334 %!assert (isequal (tattack (B, A), 'CPrecedenceTester2'))
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
335 %% Trying to change to CPrecendenceTester < Snork
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
336 %!error D = CPrecedenceTester2(2);
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
337
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
338 %!shared A, B
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
339 %!test A = Snork(rand(2));
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
340 %!test B = CPrecedenceTester3(2); % CPrecedenceTester3 < Snork
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
341 %!assert (isequal (tattack (A, B), 'Snork'))
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
342 %!assert (isequal (tattack (B, A), 'Snork'))
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
343 %% Trying to change to CPrecendenceTester3 > Snork
e603ce23f20c Fix and improve functions related to class precedence (bug #38290)
Julien Bect <julien.bect@supelec.fr>
parents: 16030
diff changeset
344 %!error D = CPrecedenceTester3(1);