changeset 27297:6ac42f6615bb

ismember.m: Add input validation for "stable"/"sorted" options * ismember.m: Check input for "stable" or "sorted" which are disallowed options. Change by_rows variable to look for "rows" string in varargin. Add input validation BIST tests.
author Rik <rik@octave.org>
date Sun, 28 Jul 2019 21:51:26 -0700
parents 538468f901dd
children 1805f8586179
files scripts/set/ismember.m
diffstat 1 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/set/ismember.m	Sun Jul 28 17:56:28 2019 -0700
+++ b/scripts/set/ismember.m	Sun Jul 28 21:51:26 2019 -0700
@@ -115,9 +115,14 @@
     a = double (a);
   endif
 
+  if (any (strcmp ("stable", varargin)) || any (strcmp ("sorted", varargin)))
+    error ('ismember: "stable" or "sorted" are not valid options');
+  endif
   [a, s] = validsetargs ("ismember", a, s, varargin{:});
 
-  by_rows = nargin == 3;
+  by_rows = any (strcmp ("rows", varargin));
+  ## FIXME: uncomment if bug #56692 is addressed.
+  ##optlegacy = any (strcmp ("legacy", varargin));
 
   if (! by_rows)
     s = s(:);
@@ -292,3 +297,10 @@
 %! assert (tf, logical ([1 0 0]))
 %! [~, s_idx] = ismember ([5 4-3j 3+4j], 5);
 %! assert (s_idx, [1 0 0])
+
+## Test input validation
+%!error ismember ()
+%!error ismember (1)
+%!error ismember (1,2,3,4)
+%!error <"stable" or "sorted" are not valid options> ismember (1,2, "sorted")
+%!error <"stable" or "sorted" are not valid options> ismember (1,2, "stable")