annotate scripts/testfun/assert.m @ 17263:a28c0d73e253

assert.m: Added many more %!tests for function. Fixed multiple bugs discovered. * scripts/testfun/assert.m: Adjust call_depth at every exit point of function to fix recursion errors. Fix incorrectly reported errors with row vector input. Add new reason text "expected XXX, but observed YYY" where XXX is "cell" or "struct". Stop reporting multiple errors when condition is both an exceptional value and not meeting tolerance. Improve %!tests to actually catch assert failing in the correct way, rather than just failing.
author Rik <rik@octave.org>
date Thu, 15 Aug 2013 12:27:37 -0700
parents e3870f594d8b
children 09543e9c8f40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 14093
diff changeset
1 ## Copyright (C) 2000-2012 Paul Kienzle
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
2 ##
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
3 ## This file is part of Octave.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
4 ##
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
6 ## under the terms of the GNU General Public License as published by
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
8 ## your option) any later version.
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
9 ##
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
13 ## General Public License for more details.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
14 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6494
diff changeset
17 ## <http://www.gnu.org/licenses/>.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
18
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
19 ## -*- texinfo -*-
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10549
diff changeset
20 ## @deftypefn {Function File} {} assert (@var{cond})
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
21 ## @deftypefnx {Function File} {} assert (@var{cond}, @var{errmsg}, @dots{})
9313
330672f4daaa fix texinfo bug
Thorsten Meyer <thorsten.meyier@gmx.de>
parents: 9051
diff changeset
22 ## @deftypefnx {Function File} {} assert (@var{cond}, @var{msg_id}, @var{errmsg}, @dots{})
11563
3c6e8aaa9555 Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
23 ## @deftypefnx {Function File} {} assert (@var{observed}, @var{expected})
3c6e8aaa9555 Grammarcheck m-files before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
24 ## @deftypefnx {Function File} {} assert (@var{observed}, @var{expected}, @var{tol})
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
25 ##
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
26 ## Produce an error if the specified condition is not met. @code{assert} can
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
27 ## be called in three different ways.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
28 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
29 ## @table @code
17178
d6499c14021c doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents: 16994
diff changeset
30 ## @item assert (@var{cond})
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
31 ## @itemx assert (@var{cond}, @var{errmsg}, @dots{})
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
32 ## @itemx assert (@var{cond}, @var{msg_id}, @var{errmsg}, @dots{})
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
33 ## Called with a single argument @var{cond}, @code{assert} produces an
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
34 ## error if @var{cond} is zero. When called with more than one argument the
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
35 ## additional arguments are passed to the @code{error} function.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
36 ##
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
37 ## @item assert (@var{observed}, @var{expected})
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11563
diff changeset
38 ## Produce an error if observed is not the same as expected. Note that
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
39 ## @var{observed} and @var{expected} can be scalars, vectors, matrices,
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
40 ## strings, cell arrays, or structures.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
41 ##
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
42 ## @item assert (@var{observed}, @var{expected}, @var{tol})
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
43 ## Produce an error if observed is not the same as expected but equality
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
44 ## comparison for numeric data uses a tolerance @var{tol}.
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
45 ## If @var{tol} is positive then it is an absolute tolerance which will produce
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
46 ## an error if @code{abs (@var{observed} - @var{expected}) > abs (@var{tol})}.
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
47 ## If @var{tol} is negative then it is a relative tolerance which will produce
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
48 ## an error if @code{abs (@var{observed} - @var{expected}) >
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
49 ## abs (@var{tol} * @var{expected})}. If @var{expected} is zero @var{tol} will
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
50 ## always be interpreted as an absolute tolerance. If @var{tol} is not scalar
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
51 ## its dimensions must agree with those of @var{observed} and @var{expected}
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
52 ## and tests are performed on an element-wise basis.
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
53 ## @end table
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
54 ## @seealso{test, fail, error}
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
55 ## @end deftypefn
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
56
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
57 function assert (cond, varargin)
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6455
diff changeset
58
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
59 if (nargin == 0 || nargin > 3)
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
60 print_usage ();
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
61 endif
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
62
17261
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
63 persistent call_depth = -1;
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
64 persistent errmsg;
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
65
17261
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
66 call_depth++;
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
67
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
68 if (call_depth == 0)
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
69 errmsg = "";
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
70 end
6494
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6455
diff changeset
71
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6455
diff changeset
72 in = deblank (argn(1,:));
76a1a953533d [project @ 2007-04-05 16:09:03 by jwe]
jwe
parents: 6455
diff changeset
73 for i = 2:rows (argn)
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 14868
diff changeset
74 in = [in "," deblank(argn(i,:))];
7151
aeeb646f6538 [project @ 2007-11-09 19:34:17 by jwe]
jwe
parents: 7027
diff changeset
75 endfor
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 14868
diff changeset
76 in = ["(" in ")"];
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
77
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
78 if (nargin == 1 || (nargin > 1 && islogical (cond) && ischar (varargin{1})))
9841
6f1ea8241c99 make isnumeric yield false on logicals
Jaroslav Hajek <highegg@gmail.com>
parents: 9448
diff changeset
79 if ((! isnumeric (cond) && ! islogical (cond)) || ! all (cond(:)))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
80 call_depth--;
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
81 if (nargin == 1)
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
82 ## Perhaps, say which elements failed?
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
83 error ("assert %s failed", in);
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
84 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
85 error (varargin{:});
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
86 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11563
diff changeset
87 endif
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
88 else
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
89 expected = varargin{1};
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
90 if (nargin < 3)
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
91 tol = 0;
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
92 else
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
93 tol = varargin{2};
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
94 endif
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
95
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
96 ## Add to list as the errors accumulate. If empty at end then no errors.
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
97 err.index = {};
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
98 err.observed = {};
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
99 err.expected = {};
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
100 err.reason = {};
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
101
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
102 if (ischar (expected))
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
103 if (! ischar (cond))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
104 err.index{end+1} = ".";
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
105 err.expected{end+1} = expected;
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
106 if (isnumeric (cond))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
107 err.observed{end+1} = num2str (cond);
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
108 err.reason{end+1} = "Expected string, but observed number";
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
109 else
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
110 err.observed{end+1} = "O";
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
111 err.reason{end+1} = ["Expected string, but observed " class(cond)];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
112 endif
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
113 elseif (! strcmp (cond, expected))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
114 err.index{end+1} = "[]";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
115 err.observed{end+1} = cond;
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
116 err.expected{end+1} = expected;
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
117 err.reason{end+1} = "Strings don't match";
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
118 endif
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
119
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
120 elseif (iscell (expected))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
121 if (! iscell (cond))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
122 err.index{end+1} = ".";
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
123 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
124 err.expected{end+1} = "E";
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
125 err.reason{end+1} = ["Expected cell, but observed " class(cond)];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
126 elseif (ndims (cond) != ndims (expected)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
127 || any (size (cond) != size (expected)))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
128 err.index{end+1} = ".";
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
129 err.observed{end+1} = ["O(" sprintf("%dx", size(cond))(1:end-1) ")"];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
130 err.expected{end+1} = ["E(" sprintf("%dx", size(expected))(1:end-1) ")"];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
131 err.reason{end+1} = "Dimensions don't match";
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
132 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
133 try
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
134 ## Recursively compare cell arrays
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
135 for i = 1:length (expected(:))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
136 assert (cond{i}, expected{i}, tol);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
137 endfor
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
138 catch
17261
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
139 err.index{end+1} = "{}";
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
140 err.observed{end+1} = "O";
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
141 err.expected{end+1} = "E";
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
142 err.reason{end+1} = "Cell configuration error";
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
143 end_try_catch
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
144 endif
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
145
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
146 elseif (isstruct (expected))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
147 if (! isstruct (cond))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
148 err.index{end+1} = ".";
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
149 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
150 err.expected{end+1} = "E";
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
151 err.reason{end+1} = ["Expected struct, but observed " class(cond)];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
152 elseif (ndims (cond) != ndims (expected)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
153 || any (size (cond) != size (expected))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
154 || rows (fieldnames (cond)) != rows (fieldnames (expected)))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
155
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
156 err.index{end+1} = ".";
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
157 err.observed{end+1} = ["O(" sprintf("%dx", size(cond))(1:end-1) ")"];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
158 err.expected{end+1} = ["E(" sprintf("%dx", size(expected))(1:end-1) ")"];
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
159 err.reason{end+1} = "Structure sizes don't match";
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
160 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
161 try
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
162 empty = isempty (cond);
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
163 normal = (numel (cond) == 1);
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
164 for [v, k] = cond
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
165 if (! isfield (expected, k))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
166 err.index{end+1} = ".";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
167 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
168 err.expected{end+1} = "E";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
169 err.reason{end+1} = ["'" k "'" " is not an expected field"];
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
170 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
171 if (empty)
12882
724bb6b7e3d5 assert.m: Correctly compare empty structures.
Rik <octave@nomad.inbox5.com>
parents: 12632
diff changeset
172 v = {};
724bb6b7e3d5 assert.m: Correctly compare empty structures.
Rik <octave@nomad.inbox5.com>
parents: 12632
diff changeset
173 elseif (normal)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
174 v = {v};
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
175 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
176 v = v(:)';
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
177 endif
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
178 ## Recursively call assert for struct array values
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
179 assert (v, {expected.(k)}, tol);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
180 endfor
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
181 catch
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
182 err.index{end+1} = ".";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
183 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
184 err.expected{end+1} = "E";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
185 err.reason{end+1} = "Structure configuration error";
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
186 end_try_catch
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
187 endif
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
188
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
189 elseif (ndims (cond) != ndims (expected)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 9841
diff changeset
190 || any (size (cond) != size (expected)))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
191 err.index{end+1} = ".";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
192 err.observed{end+1} = ["O(" sprintf("%dx", size(cond))(1:end-1) ")"];
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
193 err.expected{end+1} = ["E(" sprintf("%dx", size(expected))(1:end-1) ")"];
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
194 err.reason{end+1} = "Dimensions don't match";
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
195
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
196 else # Numeric comparison
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
197 if (nargin < 3)
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
198 ## Without explicit tolerance, be more strict.
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
199 if (! strcmp (class (cond), class (expected)))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
200 err.index{end+1} = "()";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
201 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
202 err.expected{end+1} = "E";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
203 err.reason{end+1} = ["Class " class(cond) " != " class(expected)];
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
204 elseif (isnumeric (cond))
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
205 if (issparse (cond) != issparse (expected))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
206 err.index{end+1} = "()";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
207 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
208 err.expected{end+1} = "E";
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
209 if (issparse (cond))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
210 err.reason{end+1} = "sparse != non-sparse";
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
211 else
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
212 err.reason{end+1} = "non-sparse != sparse";
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
213 endif
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
214 elseif (iscomplex (cond) != iscomplex (expected))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
215 err.index{end+1} = "()";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
216 err.observed{end+1} = "O";
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
217 err.expected{end+1} = "E";
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
218 if (iscomplex (cond))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
219 err.reason{end+1} = "complex != real";
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
220 else
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
221 err.reason{end+1} = "real != complex";
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
222 endif
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
223 endif
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
224 endif
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
225 endif
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
226
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
227 if (isempty (err.index))
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
228
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
229 A = cond;
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
230 B = expected;
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
231
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
232 ## Check exceptional values.
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
233 errvec = ( isna (real (A)) != isna (real (B))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
234 | isna (imag (A)) != isna (imag (B)));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
235 erridx = find (errvec);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
236 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
237 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
238 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
239 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
240 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
241 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
242 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
243 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
244 repmat ({"'NA' mismatch"}, length (erridx), 1);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
245 endif
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
246 errseen = errvec;
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
247
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
248 errvec = ( isnan (real (A)) != isnan (real (B))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
249 | isnan (imag (A)) != isnan (imag (B)));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
250 erridx = find (errvec & !errseen);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
251 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
252 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
253 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
254 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
255 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
256 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
257 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
258 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
259 repmat ({"'NaN' mismatch"}, length (erridx), 1);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
260 endif
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
261 errseen |= errvec;
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
262
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
263 errvec = ((isinf (real (A)) | isinf (real (B))) ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
264 & (real (A) != real (B))) ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
265 | ((isinf (imag (A)) | isinf (imag (B))) ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
266 & (imag (A) != imag (B)));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
267 erridx = find (errvec & !errseen);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
268 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
269 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
270 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
271 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
272 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
273 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
274 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
275 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
276 repmat ({"'Inf' mismatch"}, length (erridx), 1);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
277 endif
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
278 errseen |= errvec;
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
279
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
280 ## Check normal values.
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
281 ## Replace exceptional values already checked above by zero.
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
282 A_null_real = real (A);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
283 B_null_real = real (B);
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
284 exclude = errseen | ! isfinite (A_null_real) & ! isfinite (B_null_real);
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
285 A_null_real(exclude) = 0;
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
286 B_null_real(exclude) = 0;
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
287 A_null_imag = imag (A);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
288 B_null_imag = imag (B);
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
289 exclude = errseen | ! isfinite (A_null_imag) & ! isfinite (B_null_imag);
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
290 A_null_imag(exclude) = 0;
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
291 B_null_imag(exclude) = 0;
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
292 A_null = complex (A_null_real, A_null_imag);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
293 B_null = complex (B_null_real, B_null_imag);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
294 if (isscalar (tol))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
295 mtol = repmat (tol, size (A));
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
296 else
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
297 mtol = tol;
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
298 endif
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
299
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
300 k = (mtol == 0);
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
301 erridx = find ((A_null != B_null) & k);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
302 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
303 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
304 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
305 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
306 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
307 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
308 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
309 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
310 ostrsplit (deblank (sprintf ("Abs err %.5g exceeds tol %.5g\n",...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
311 [abs(A_null(erridx) - B_null(erridx))(:) mtol(erridx)(:)]')), "\n");
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
312 endif
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
313
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
314 k = (mtol > 0);
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
315 erridx = find ((abs (A_null - B_null) > mtol) & k);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
316 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
317 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
318 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
319 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
320 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
321 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
322 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
323 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
324 ostrsplit (deblank (sprintf ("Abs err %.5g exceeds tol %.5g\n",...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
325 [abs(A_null(erridx) - B_null(erridx))(:) mtol(erridx)(:)]')), "\n");
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
326 endif
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
327
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
328 k = (mtol < 0);
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
329 if (any (k(:)))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
330 ## Test for absolute error where relative error can't be calculated.
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
331 erridx = find ((B_null == 0) & abs (A_null) > abs (mtol) & k);
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
332 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
333 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
334 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
335 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
336 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
337 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
338 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
339 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
340 ostrsplit (deblank (sprintf ("Abs err %.5g exceeds tol %.5g\n",
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
341 [abs(A_null(erridx) - B_null(erridx)) -mtol(erridx)]')), "\n");
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
342 endif
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
343 ## Test for relative error
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
344 Bdiv = Inf (size (B_null));
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
345 Bdiv(k & (B_null != 0)) = B_null(k & (B_null != 0));
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
346 relerr = abs ((A_null - B_null) ./ abs (Bdiv));
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
347 erridx = find ((relerr > abs (mtol)) & k);
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
348 if (! isempty (erridx))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
349 err.index(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
350 ind2tuple (size (A), erridx);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
351 err.observed(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
352 strtrim (cellstr (num2str (A(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
353 err.expected(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
354 strtrim (cellstr (num2str (B(erridx) (:))));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
355 err.reason(end+1:end+length (erridx)) = ...
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
356 ostrsplit (deblank (sprintf ("Rel err %.5g exceeds tol %.5g\n",
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
357 [relerr(erridx)(:) -mtol(erridx)(:)]')), "\n");
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
358 endif
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
359 endif
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
360 endif
9447
bb2ae2210e37 relax assert for exact matches
Jaroslav Hajek <highegg@gmail.com>
parents: 9313
diff changeset
361
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
362 endif
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
363
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
364 ## Print any errors
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
365 if (! isempty (err.index))
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
366 if (! isempty (errmsg))
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
367 errmsg = [errmsg "\n"];
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
368 endif
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
369 errmsg = [errmsg, pprint(in, err)];
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
370 end
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
371
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
372 endif
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
373
17261
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
374 call_depth--;
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
375
e3870f594d8b assert.m: Fix recursive calls.
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17260
diff changeset
376 if (call_depth == -1)
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
377 ## Last time through. If there were any errors on any pass, raise a flag.
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
378 if (! isempty (errmsg))
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
379 error (errmsg);
7770
c6a1a217ac3c Compatibility fix for assert
David Bateman <dbateman@free.fr>
parents: 7703
diff changeset
380 endif
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
381 endif
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
382
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
383 endfunction
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
384
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
385
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
386 ## empty input
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
387 %!assert ([])
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
388 %!assert (zeros (3,0), zeros (3,0))
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
389 %!error <O\(3x0\)\s+E\(0x2\)> assert (zeros (3,0), zeros (0,2))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
390 %!error <Dimensions don't match> assert (zeros (3,0), [])
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
391 %!error <Dimensions don't match> assert (zeros (2,0,2), zeros (2,0))
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
392
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
393 ## conditions
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
394 %!assert (isempty ([]))
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
395 %!assert (1)
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
396 %!error assert (0)
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
397 %!assert (ones (3,1))
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
398 %!assert (ones (1,3))
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
399 %!assert (ones (3,4))
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
400 %!error assert ([1,0,1])
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
401 %!error assert ([1;1;0])
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
402 %!error assert ([1,0;1,1])
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
403
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
404 ## scalars
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
405 %!error <Dimensions don't match> assert (3, [3,3])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
406 %!error <Dimensions don't match> assert (3, [3,3; 3,3])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
407 %!error <Dimensions don't match> assert ([3,3; 3,3], 3)
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
408 %!assert (3, 3)
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
409 %!error <Abs err 1 exceeds tol> assert (3, 4)
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
410 %!assert (3+eps, 3, eps)
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
411 %!assert (3, 3+eps, eps)
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
412 %!error <Abs err 4.4409e-16 exceeds tol> assert (3+2*eps, 3, eps)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
413 %!error <Abs err 4.4409e-16 exceeds tol> assert (3, 3+2*eps, eps)
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
414
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
415 ## vectors
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
416 %!assert ([1,2,3],[1,2,3]);
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
417 %!assert ([1;2;3],[1;2;3]);
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
418 %!error <Abs err 1 exceeds tol 0> assert ([2,2,3,3],[1,2,3,4]);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
419 %!error <Abs err 1 exceeds tol 0.5> assert ([2,2,3,3],[1,2,3,4],0.5);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
420 %!error <Rel err 1 exceeds tol 0.1> assert ([2,2,3,5],[1,2,3,4],-0.1);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
421 %!error <Abs err 1 exceeds tol 0> assert ([6;6;7;7],[5;6;7;8]);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
422 %!error <Abs err 1 exceeds tol 0.5> assert ([6;6;7;7],[5;6;7;8],0.5);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
423 %!error <Rel err .* exceeds tol 0.1> assert ([6;6;7;7],[5;6;7;8],-0.1);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
424 %!error <Dimensions don't match> assert ([1,2,3],[1;2;3]);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
425 %!error <Dimensions don't match> assert ([1,2],[1,2,3]);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
426 %!error <Dimensions don't match> assert ([1;2;3],[1;2]);
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
427
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
428 ## matrices
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
429 %!assert ([1,2;3,4],[1,2;3,4]);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
430 %!error <\(1,2\)\s+4\s+2> assert ([1,4;3,4],[1,2;3,4])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
431 %!error <Dimensions don't match> assert ([1,3;2,4;3,5],[1,2;3,4])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
432 %!test # 2-D matrix
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
433 %! A = [1 2 3]'*[1,2];
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
434 %! assert (A, A);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
435 %! fail ("assert (A.*(A!=2),A)");
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
436 %!test # N-D matrix
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
437 %! X = zeros (2,2,3);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
438 %! Y = X;
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
439 %! Y(1,2,3) = 1.5;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
440 %! fail ("assert (X,Y)", "\(1,2,3\).*Abs err 1.5 exceeds tol 0");
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
441
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
442 ## must give a small tolerance for floating point errors on relative
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
443 %!assert (100+100*eps, 100, -2*eps)
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
444 %!assert (100, 100+100*eps, -2*eps)
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
445 %!error <Rel err .* exceeds tol> assert (100+300*eps, 100, -2*eps)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
446 %!error <Rel err .* exceeds tol> assert (100, 100+300*eps, -2*eps)
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
447
7027
3e2a59c78b9d [project @ 2007-10-15 08:22:54 by dbateman]
dbateman
parents: 7017
diff changeset
448 ## test relative vs. absolute tolerances
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
449 %!test assert (0.1+eps, 0.1, 2*eps);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
450 %!error <Rel err 2.2204e-15 exceeds tol> assert (0.1+eps, 0.1, -2*eps);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
451 %!test assert (100+100*eps, 100, -2*eps);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
452 %!error <Abs err 2.8422e-14 exceeds tol> assert (100+100*eps, 100, 2*eps);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
453
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
454 ## Corner case of relative tolerance with 0 divider
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
455 %!error <Abs err 2 exceeds tol 0.1> assert (2, 0, -0.1)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
456
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
457 ## Extra checking of inputs when tolerance unspecified.
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
458 %!error <Class single != double> assert (single (1), 1)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
459 %!error <Class uint8 != uint16> assert (uint8 (1), uint16 (1))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
460 %!error <sparse != non-sparse> assert (sparse([1]), [1])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
461 %!error <non-sparse != sparse> assert ([1], sparse([1]))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
462 %!error <complex != real> assert (1+i, 1)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
463 %!error <real != complex> assert (1, 1+i)
7027
3e2a59c78b9d [project @ 2007-10-15 08:22:54 by dbateman]
dbateman
parents: 7017
diff changeset
464
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
465 ## exceptional values
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
466 %!assert ([NaN, NA, Inf, -Inf, 1+eps, eps], [NaN, NA, Inf, -Inf, 1, 0], eps)
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
467
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
468 %!error <'NaN' mismatch> assert (NaN, 1)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
469 %!error <'NaN' mismatch> assert ([NaN 1], [1 NaN])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
470 %!test
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
471 %! try
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
472 %! assert ([NaN 1], [1 NaN]);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
473 %! catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
474 %! errmsg = lasterr ();
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
475 %! if (sum (errmsg () == "\n") != 4)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
476 %! error ("Too many errors reported for NaN assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
477 %! elseif (strfind (errmsg, "NA"))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
478 %! error ("NA reported for NaN assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
479 %! elseif (strfind (errmsg, "Abs err NaN exceeds tol 0"))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
480 %! error ("Abs err reported for NaN assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
481 %! endif
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
482 %! end_try_catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
483
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
484 %!error <'NA' mismatch> assert (NA, 1)
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
485 %!error assert ([NA 1]', [1 NA]')
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
486 %!test
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
487 %! try
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
488 %! assert ([NA 1]', [1 NA]');
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
489 %! catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
490 %! errmsg = lasterr ();
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
491 %! if (sum (errmsg () == "\n") != 4)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
492 %! error ("Too many errors reported for NA assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
493 %! elseif (strfind (errmsg, "NaN"))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
494 %! error ("NaN reported for NA assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
495 %! elseif (strfind (errmsg, "Abs err NA exceeds tol 0"))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
496 %! error ("Abs err reported for NA assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
497 %! endif
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
498 %! end_try_catch
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
499 %!error assert ([(complex (NA, 1)) (complex (2, NA))], [(complex (NA, 2)) 2])
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
500
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
501 %!error <'Inf' mismatch> assert (-Inf, Inf)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
502 %!error <'Inf' mismatch> assert ([-Inf Inf], [Inf -Inf])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
503 %!test
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
504 %! try
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
505 %! assert (complex (Inf, 0.2), complex (-Inf, 0.2 + 2*eps), eps);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
506 %! catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
507 %! errmsg = lasterr ();
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
508 %! if (sum (errmsg () == "\n") != 3)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
509 %! error ("Too many errors reported for Inf assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
510 %! elseif (strfind (errmsg, "Abs err"))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
511 %! error ("Abs err reported for Inf assert");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
512 %! endif
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
513 %! end_try_catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
514 %!error <Abs err> assert (complex (Inf, 0.2), complex (Inf, 0.2 + 2*eps), eps)
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
515
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
516 ## strings
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
517 %!assert ("dog", "dog")
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
518 %!error <Strings don't match> assert ("dog", "cat")
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
519 %!error <Expected string, but observed number> assert (3, "dog")
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
520 %!error <Class char != double> assert ("dog", [3 3 3])
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
521 %!error <Expected string, but observed cell> assert ({"dog"}, "dog")
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
522 %!error <Expected string, but observed struct> assert (struct ("dog", 3), "dog")
5589
f812a0680d05 [project @ 2006-01-06 00:14:42 by jwe]
jwe
parents:
diff changeset
523
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
524 ## cell arrays
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
525 %!error <Expected cell, but observed double> assert (1, {1})
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
526 %!error <Dimensions don't match> assert (cell (1,2,3), cell (3,2,1))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
527 %!test
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
528 %! x = {{{1}}, 2}; # cell with multiple levels
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
529 %! y = x;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
530 %! assert (x,y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
531 %! y{1}{1}{1} = 3;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
532 %! fail ("assert (x,y)", "Abs err 2 exceeds tol 0");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
533
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
534 %!test
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
535 %! x = {[3], [1,2,3]; 100+100*eps, "dog"};
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
536 %! y = x;
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
537 %! assert (x, y);
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
538 %! y = x; y(1,1) = [2];
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
539 %! fail ("assert (x, y)");
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
540 %! y = x; y(1,2) = [0, 2, 3];
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
541 %! fail ("assert (x, y)");
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
542 %! y = x; y(2,1) = 101;
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
543 %! fail ("assert (x, y)");
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
544 %! y = x; y(2,2) = "cat";
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
545 %! fail ("assert (x, y)");
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
546 %! y = x; y(1,1) = [2]; y(1,2) = [0, 2, 3]; y(2,1) = 101; y(2,2) = "cat";
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
547 %! fail ("assert (x, y)");
12882
724bb6b7e3d5 assert.m: Correctly compare empty structures.
Rik <octave@nomad.inbox5.com>
parents: 12632
diff changeset
548
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
549 ## structures
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
550 %!error <Expected struct, but observed double> assert (1, struct ("a", 1))
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
551 %!error <Structure sizes don't match>
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
552 %! x(1,2,3).a = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
553 %! y(1,2).a = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
554 %! assert (x,y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
555 %!error <Structure sizes don't match>
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
556 %! x(1,2,3).a = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
557 %! y(3,2,2).a = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
558 %! assert (x,y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
559 %!error <Structure sizes don't match>
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
560 %! x.a = 1; x.b = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
561 %! y.a = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
562 %! assert (x,y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
563 %!error <'b' is not an expected field>
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
564 %! x.b = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
565 %! y.a = 1;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
566 %! assert (x,y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
567
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
568 %!test
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
569 %! x.a = 1; x.b=[2, 2];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
570 %! y.a = 1; y.b=[2, 2];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
571 %! assert (x, y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
572 %! y.b=3;
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
573 %! fail ("assert (x, y)");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
574 %! fail ("assert (3, x)");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
575 %! fail ("assert (x, 3)");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
576 %! ## Empty structures
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
577 %! x = resize (x, 0, 1);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
578 %! y = resize (y, 0, 1);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
579 %! assert (x, y);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
580
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
581 ## vector of tolerances
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
582 %!test
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
583 %! x = [-40:0];
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
584 %! y1 = (10.^x).*(10.^x);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
585 %! y2 = 10.^(2*x);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
586 %! assert (y1, y2, eps (y1));
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
587 %! fail ("assert (y1, y2 + eps*1e-70, eps (y1))");
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
588
17263
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
589 ## Multiple tolerances
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
590 %!test
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
591 %! x = [1 2; 3 4];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
592 %! y = [0 -1; 1 2];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
593 %! tol = [-0.1 0; -0.2 0.3];
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
594 %! try
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
595 %! assert (x, y, tol);
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
596 %! catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
597 %! errmsg = lasterr ();
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
598 %! if (sum (errmsg () == "\n") != 6)
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
599 %! error ("Incorrect number of errors reported");
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
600 %! endif
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
601 %! assert (!isempty (regexp (errmsg, '\(1,2\).*Abs err 3 exceeds tol 0\>')));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
602 %! assert (!isempty (regexp (errmsg, '\(2,2\).*Abs err 2 exceeds tol 0.3')));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
603 %! assert (!isempty (regexp (errmsg, '\(1,1\).*Abs err 1 exceeds tol 0.1')));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
604 %! assert (!isempty (regexp (errmsg, '\(2,1\).*Rel err 2 exceeds tol 0.2')));
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
605 %! end_try_catch
a28c0d73e253 assert.m: Added many more %!tests for function. Fixed multiple bugs discovered.
Rik <rik@octave.org>
parents: 17261
diff changeset
606
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
607 ## test input validation
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
608 %!error assert ()
14070
c2c18e2e7c9c assert.m: Update documentation string, add %!tests for cell arrays.
Rik <octave@nomad.inbox5.com>
parents: 14038
diff changeset
609 %!error assert (1,2,3,4)
12882
724bb6b7e3d5 assert.m: Correctly compare empty structures.
Rik <octave@nomad.inbox5.com>
parents: 12632
diff changeset
610
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
611
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
612 ## Convert all error indices into tuple format
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
613 function cout = ind2tuple (matsize, erridx)
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
614
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
615 cout = cell (numel (erridx), 1);
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
616 tmp = cell (1, numel (matsize));
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
617 [tmp{:}] = ind2sub (matsize, erridx (:));
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
618 subs = [tmp{:}];
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
619 if (numel (matsize) == 2)
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
620 subs = subs(:, matsize != 1);
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
621 endif
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
622 for i = 1:numel (erridx)
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
623 loc = sprintf ("%d,", subs(i,:));
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
624 cout{i} = ["(" loc(1:end-1) ")"];
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
625 endfor
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
626
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
627 endfunction
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
628
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
629
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
630 ## Pretty print the various errors in a condensed tabular format.
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
631 function str = pprint (in, err)
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
632
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
633 str = ["ASSERT errors for: assert " in "\n"];
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
634 str = [str, "\n Location | Observed | Expected | Reason\n"];
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
635 for i = 1:length (err.index)
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
636 leni = length (err.index{i});
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
637 leno = length (err.observed{i});
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
638 lene = length (err.expected{i});
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
639 str = [str, sprintf("%*s%*s %*s%*s %*s%*s %s\n",
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
640 6+fix(leni/2), err.index{i} , 6-fix(leni/2), "",
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
641 6+fix(leno/2), err.observed{i}, 6-fix(leno/2), "",
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
642 6+fix(lene/2), err.expected{i}, 6-fix(lene/2), "",
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
643 err.reason{i})];
17258
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
644 endfor
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
645
afd235a206a2 Allow vector/matrix tolerance and improve error messages for assert.m script
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17178
diff changeset
646 endfunction
17259
684ccccbc15d assert.m: Add vector checking for relative errors.
Rik <rik@octave.org>
parents: 17258
diff changeset
647