diff test/args.tst @ 16030:1af8d21608b7

rename all test files in the test directory from test_X.m to X.tst * Use - instead of _ for .tst file names. Fix all file lists in module.mk and Makefile.am files. * __run_test_suite__.m: Adapt to new naming convention.
author John W. Eaton <jwe@octave.org>
date Sat, 09 Feb 2013 21:35:55 -0500
parents test/test_args.m@72c96de7a403
children 7f27a3cbdb41
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/args.tst	Sat Feb 09 21:35:55 2013 -0500
@@ -0,0 +1,236 @@
+## Copyright (C) 2006-2012 John W. Eaton
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+########################################
+## No inputs or no outputs
+
+## no input or output arguments
+%!function f ()
+%!  assert (nargin, 0);
+%!  assert (nargout, 0);
+%!endfunction
+%!test
+%! f;
+
+## one input with two possible inputs
+%!function f (x, y)
+%!  assert (nargin, 1);
+%!  assert (nargout, 0);
+%!endfunction
+%!test
+%! f (1);
+
+## no inputs, one of multiple outputs
+%!function [x, y] = f ()
+%!  assert (nargin, 0);
+%!  assert (nargout, 1);
+%!  x = 2;
+%!endfunction
+%!test
+%! assert (f (), 2);
+
+## one of multiple inputs, one of multiple outputs
+%!function [x, y] = f (a, b)
+%!  assert (nargin, 1);
+%!  assert (nargout, 1);
+%!  x = a;
+%!endfunction
+%!test
+%! assert (f (1), 1);
+
+########################################
+## Varargin, varargout
+
+## varargin and varargout with no inputs or outputs
+%!function [varargout] = f (varargin)
+%!  assert (nargin, 0);
+%!  assert (nargout, 0);
+%!endfunction
+%!test
+%! f;
+
+## varargin and varargout with one input
+%!function [varargout] = f (x, varargin)
+%!  assert (nargin, 1);
+%!  assert (nargout, 0);
+%!endfunction
+%!test
+%! f (1);
+
+## varargin and varargout with one output
+%!function [x, varargout] = f (varargin)
+%!  assert (nargin, 0);
+%!  assert (nargout, 1);
+%!  x = 2;
+%!endfunction
+%!test
+%! assert (f (), 2);
+
+## varargin and varargout with one input and output
+%!function [varargout] = f (varargin)
+%!  assert (nargin, 1);
+%!  assert (nargout, 1);
+%!  varargout{1} = varargin{1};
+%!endfunction
+%!test
+%! assert (f (1), 1);
+
+## multiple inputs, multiple outputs, but not all of either
+## WARNING: The original test did not assign the outputs, it just
+## requested them, and I think that is supposed to be an error.  It also
+## still has a non-assigned output argument.
+%!function [x, y, z] = f (a, b, c, d, e)
+%!  assert (nargin, 4);
+%!  assert (nargout, 2);
+%!  x = a;
+%!  y = b;
+%!endfunction
+%!test
+%! [s, t] = f (1, 2, 3, 4);
+%! assert ([s t], [1 2]);
+
+## Fully used varargin and varargout
+%!function [varargout] = f (varargin)
+%!  assert (nargin, 3);
+%!  assert (nargout, 4);
+%!  varargout{1} = varargin{1};
+%!  varargout{2} = varargin{2};
+%!  varargout{3} = varargin{3};
+%!  varargout{4} = 4;
+%!endfunction
+%!test
+%! [s, t, u, v] = f (1, 2, 3);
+%! assert ([s t u v], [1 2 3 4]);
+
+## Test default arguments
+## numeric
+%!function f (x = 0)
+%!  assert (x, 0);
+%!endfunction
+%!test
+%!  f()
+
+## numeric vector (spaces)
+%!function f (x = [0 1 2])
+%!  assert (x, [0 1 2]);
+%!endfunction
+%!test
+%!  f()
+
+## numeric vector (range)
+%!function f (x = 1:3)
+%!  assert (x, 1:3);
+%!endfunction
+%!test
+%!  f()
+
+## numeric vector (commas)
+%!function f (x = [0,1,2])
+%!  assert (x, [0 1 2]);
+%!endfunction
+%!test
+%!  f()
+
+## numeric vector (commas and spaces)
+%!function f (x = [0, 1, 2])
+%!  assert (x, [0 1 2]);
+%!endfunction
+%!test
+%!  f()
+
+## numeric matrix
+%!function f (x = [0, 1, 2;3, 4, 5])
+%!  assert (x, [0 1 2;3 4 5]);
+%!endfunction
+%!test
+%!  f()
+
+## empty cell
+%!function f (x = {})
+%!  assert (x, {});
+%!endfunction
+%!test
+%!  f()
+
+## full cell
+%!function f (x = {1})
+%!  assert (x, {1});
+%!endfunction
+%!test
+%!  f()
+
+## many cells
+%!function f (x = {1 'a' "b" 2.0 struct("a", 3)})
+%!  assert (x, {1 'a' "b" 2.0 struct("a", 3)});
+%!endfunction
+%!test
+%!  f()
+
+## struct
+%!function f (x = struct("a", 3))
+%!  assert (x, struct ("a", 3));
+%!endfunction
+%!test
+%!  f()
+
+## char (double quotes)
+%!function f (x = "a")
+%!  assert (x, "a");
+%!endfunction
+%!test
+%!  f()
+
+## char (single quotes)
+%!function f (x = 'a')
+%!  assert (x, "a");
+%!endfunction
+%!test
+%!  f()
+
+## char (string, double quotes)
+%!function f (x = "abc123")
+%!  assert (x, "abc123");
+%!endfunction
+%!test
+%!  f()
+
+## char (string, double quotes, punctuation)
+%!function f (x = "abc123`1234567890-=~!@#$%^&*()_+[]{}|;':\",./<>?\\")
+%!  assert (x, "abc123`1234567890-=~!@#$%^&*()_+[]{}|;':\",./<>?\\");
+%!endfunction
+%!test
+%!  f()
+
+## Function handle (builtin)
+%!function f (x = @sin)
+%!  finfo = functions (x);
+%!  fname = finfo.function;
+%!  assert (isa (x, "function_handle") && strcmp (fname, "sin"));
+%!endfunction
+%!test
+%!  f()
+
+## Function handle (anonymous)
+%!function f (x = @(x) x.^2)
+%!  finfo = functions (x);
+%!  ftype = finfo.type;
+%!  assert (isa (x, "function_handle") && strcmp (ftype, "anonymous"));
+%!endfunction
+%!test
+%!  f()
+