From: <car...@us...> - 2012-05-10 18:57:22
|
Revision: 10404 http://octave.svn.sourceforge.net/octave/?rev=10404&view=rev Author: carandraug Date: 2012-05-10 18:57:15 +0000 (Thu, 10 May 2012) Log Message: ----------- inputParser: added test blocks Modified Paths: -------------- trunk/octave-forge/main/general/inst/@inputParser/inputParser.m Modified: trunk/octave-forge/main/general/inst/@inputParser/inputParser.m =================================================================== --- trunk/octave-forge/main/general/inst/@inputParser/inputParser.m 2012-05-10 18:55:43 UTC (rev 10403) +++ trunk/octave-forge/main/general/inst/@inputParser/inputParser.m 2012-05-10 18:57:15 UTC (rev 10404) @@ -160,3 +160,65 @@ inPar = class (inPar, 'inputParser'); endfunction + +%!shared p, out +%! p = inputParser; +%! p = p.addRequired ("req1", @(x) ischar (x)); +%! p = p.addOptional ("op1", "val", @(x) ischar (x) && any (strcmp (x, {"val", "foo"}))); +%! p = p.addOptional ("op2", 78, @(x) (x) > 50); +%! p = p.addSwitch ("verbose"); +%! p = p.addParamValue ("line", "tree", @(x) ischar (x) && any (strcmp (x, {"tree", "circle"}))); +%! ## check normal use, only required are given +%! out = p.parse ("file"); +%!assert ({out.Results.req1, out.Results.op1, out.Results.op2, out.Results.verbose, out.Results.line}, +%! {"file" , "val" , 78 , false , "tree"}); +%!assert (out.UsingDefaults, {"op1", "op2", "verbose", "line"}); +%! ## check normal use, but give values different than defaults +%! out = p.parse ("file", "foo", 80, "line", "circle", "verbose"); +%!assert ({out.Results.req1, out.Results.op1, out.Results.op2, out.Results.verbose, out.Results.line}, +%! {"file" , "foo" , 80 , true , "circle"}); +%! ## check optional is skipped and considered ParamValue if unvalidated string +%! out = p.parse ("file", "line", "circle"); +%!assert ({out.Results.req1, out.Results.op1, out.Results.op2, out.Results.verbose, out.Results.line}, +%! {"file" , "val" , 78 , false , "circle"}); +%! ## check case insensitivity +%! out = p.parse ("file", "foo", 80, "LiNE", "circle", "vERbOSe"); +%!assert ({out.Results.req1, out.Results.op1, out.Results.op2, out.Results.verbose, out.Results.line}, +%! {"file" , "foo" , 80 , true , "circle"}); +%! ## check KeepUnmatched +%! p.KeepUnmatched = true; +%! out = p.parse ("file", "foo", 80, "line", "circle", "verbose", "extra", 50); +%!assert (out.Unmatched.extra, 50) +%! ## check error when missing required +%!error(p.parse()) +%! ## check error when given required do not validate +%!error(p.parse(50)) +%! ## check error when given optional do not validate +%!error(p.parse("file", "no-val")) +%! ## check error when given ParamValue do not validate +%!error(p.parse("file", "foo", 51, "line", "round")) + +## check alternative method (obj), ...) API +%!shared p, out +%! p = inputParser; +%! p = addRequired (p, "req1", @(x) ischar (x)); +%! p = addOptional (p, "op1", "val", @(x) ischar (x) && any (strcmp (x, {"val", "foo"}))); +%! p = addOptional (p, "op2", 78, @(x) (x) > 50); +%! p = addSwitch (p, "verbose"); +%! p = addParamValue (p, "line", "tree", @(x) ischar (x) && any (strcmp (x, {"tree", "circle"}))); +%! ## check normal use, only required are given +%! out = parse (p, "file"); +%!assert ({out.Results.req1, out.Results.op1, out.Results.op2, out.Results.verbose, out.Results.line}, +%! {"file" , "val" , 78 , false , "tree"}); +%!assert (out.UsingDefaults, {"op1", "op2", "verbose", "line"}); +%! ## check normal use, but give values different than defaults +%! out = parse (p, "file", "foo", 80, "line", "circle", "verbose"); +%!assert ({out.Results.req1, out.Results.op1, out.Results.op2, out.Results.verbose, out.Results.line}, +%! {"file" , "foo" , 80 , true , "circle"}); + +## if we were matlab compatible... +%!shared p, out +%! p = inputParser; +%! p = p.addOptional ("op1", "val"); +%! p = p.addParamValue ("line", "tree"); +%!xtest assert (getfield (p.parse("line", "circle"), "Results"), struct ("op1", "val", "line", "circle")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jpi...@us...> - 2012-09-22 08:40:20
|
Revision: 11070 http://octave.svn.sourceforge.net/octave/?rev=11070&view=rev Author: jpicarbajal Date: 2012-09-22 08:40:14 +0000 (Sat, 22 Sep 2012) Log Message: ----------- general: Fixing error in documentation when passing function handles to inputParser. Modified Paths: -------------- trunk/octave-forge/main/general/inst/@inputParser/inputParser.m Modified: trunk/octave-forge/main/general/inst/@inputParser/inputParser.m =================================================================== --- trunk/octave-forge/main/general/inst/@inputParser/inputParser.m 2012-09-22 08:15:06 UTC (rev 11069) +++ trunk/octave-forge/main/general/inst/@inputParser/inputParser.m 2012-09-22 08:40:14 UTC (rev 11070) @@ -75,7 +75,7 @@ ## ## ## one can create a function handle to anonymous functions for validators ## val_mat = @@(x)isvector(x) && all( x <= 1) && all(x >= 0); -## p = p.addOptional ("mat", [0 0], @@val_mat); +## p = p.addOptional ("mat", [0 0], val_mat); ## ## ## create two ParamValue type of arguments ## val_type = @@(x) ischar(x) && any(strcmp(x, @{"linear", "quadratic"@}); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |