Mercurial > octave
changeset 26235:00924e6e513e
ismember.m: Handle mixed char/numeric inputs in Matlab compatible way (bug #53924).
* ismember.m: If inputs are a mix of char and numeric, convert char input
to double. Add BIST tests for behavior.
author | Guillaume Flandin <guillaume.offline@gmail.com> |
---|---|
date | Fri, 14 Dec 2018 09:02:49 -0800 |
parents | 23b56a61c918 |
children | 73512571d85a |
files | scripts/set/ismember.m |
diffstat | 1 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/set/ismember.m Thu Dec 13 23:23:54 2018 -0800 +++ b/scripts/set/ismember.m Fri Dec 14 09:02:49 2018 -0800 @@ -108,6 +108,13 @@ a = {a}; endif + ## Another Matlab-compatible behavior. See bug #53924. + if (isnumeric (a) && ischar (s)) + s = double (s); + elseif (ischar (a) && isnumeric (s)) + a = double (a); + endif + [a, s] = validsetargs ("ismember", a, s, varargin{:}); by_rows = nargin == 3; @@ -165,12 +172,15 @@ %!assert (ismember ("abc", {"abc", "def"}), true) %!assert (isempty (ismember ([], [1, 2])), true) %!assert (isempty (ismember ({}, {'a', 'b'})), true) +%!assert (isempty (ismember ([], 'a')), true) %!assert (ismember ("", {"abc", "def"}), false) +%!assert (ismember (1, 'abc'), false) +%!assert (ismember ("abc", 1), [false false false]) +%!assert (ismember ("abc", 99), [false false true]) %!fail ("ismember ([], {1, 2})") %!fail ("ismember ({[]}, {1, 2})") %!fail ("ismember ({}, {1, 2})") %!fail ("ismember ({1}, {'1', '2'})") -%!fail ("ismember (1, 'abc')") %!fail ("ismember ({'1'}, {'1' '2'},'rows')") %!fail ("ismember ([1 2 3], [5 4 3 1], 'rows')") %!assert (ismember ({"foo", "bar"}, {"foobar"}), [false false])