Mercurial > octave-nkf
changeset 19058:26a770330953
example.m: Add better input validation and %!error tests for that.
* example.m: Add better input validation and %!error tests for that.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 18 Aug 2014 09:06:08 -0700 |
parents | ffba4ffa1f85 |
children | f27140dd13a6 |
files | scripts/testfun/example.m |
diffstat | 1 files changed, 27 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/testfun/example.m Sun Aug 17 11:43:12 2014 -0700 +++ b/scripts/testfun/example.m Mon Aug 18 09:06:08 2014 -0700 @@ -45,7 +45,24 @@ n = str2double (n); endif + if (! (isreal (n) && isscalar (n) && n == fix (n))) + error ("example: N must be a scalar integer"); + endif + [code, idx] = test (name, "grabdemo"); + + if (idx == -1) + warning ("example: no function %s found", name); + return; + elseif (isempty (idx)) + warning ("example: no example available for %s", name); + return; + elseif (n >= length (idx)) + warning ("example: only %d examples available for %s", + length (idx) - 1, name); + return; + endif + if (nargout > 0) if (n > 0) if (n <= length (idx)) @@ -65,13 +82,6 @@ else doidx = 1:length (idx) - 1; endif - if (isempty (idx)) - warning ("no example available for %s", name); - return; - elseif (n >= length (idx)) - warning ("only %d examples available for %s", length (idx) - 1, name); - return; - endif for i = 1:length (doidx) block = code(idx(doidx(i)):idx(doidx(i)+1)-1); @@ -88,17 +98,24 @@ %!demo %! clf; -%! t = 0:0.01:2*pi; x = sin (t); +%! t = 0:0.01:2*pi; +%! x = sin (t); %! plot (t,x) %!assert (example ("example", 1), "\n example (\"example\");"); + %!test %! [code, idx] = example ("example"); %! assert (code, ... -%! "\n example (\"example\");\n clf;\n t = 0:0.01:2*pi; x = sin (t);\n plot (t,x)"); +%! "\n example (\"example\");\n clf;\n t = 0:0.01:2*pi;\n x = sin (t);\n plot (t,x)"); %! assert (idx, [1, 23, 73]); %% Test input validation -%!error example +%!error example () %!error example ("example", 3, 5) +%!error <N must be a scalar integer> example ("example", {1}) +%!error <N must be a scalar integer> example ("example", ones (2,2)) +%!error <N must be a scalar integer> example ("example", 1.5) +%!warning <no function .* found> example ("_%NOT_A_FUNCTION%_"); +%!warning <only 2 examples available for example> example ("example", 10);