# HG changeset patch # User Rik # Date 1408377968 25200 # Node ID 26a770330953cd8ad28d9d81a0f4bcde5b9a69d4 # Parent ffba4ffa1f8583d4e0608d8aa891a8af1a4b85d7 example.m: Add better input validation and %!error tests for that. * example.m: Add better input validation and %!error tests for that. diff -r ffba4ffa1f85 -r 26a770330953 scripts/testfun/example.m --- 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 example ("example", {1}) +%!error example ("example", ones (2,2)) +%!error example ("example", 1.5) +%!warning example ("_%NOT_A_FUNCTION%_"); +%!warning example ("example", 10);