Mercurial > octave
changeset 27325:983dab0902f7
More explicit error messages for invalid 2nd and 3rd inputs to diag().
* data.cc (Fdiag): Specify whether M (2nd input) or N (3rd input) is in error.
Re-order BIST tests to have input validation last. Add check for text of
error messages in input validation.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 05 Aug 2019 20:04:10 -0700 |
parents | 0cf70e494a3f |
children | a6907d46464f |
files | libinterp/corefcn/data.cc |
diffstat | 1 files changed, 14 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/data.cc Mon Aug 05 17:16:27 2019 -0700 +++ b/libinterp/corefcn/data.cc Mon Aug 05 20:04:10 2019 -0700 @@ -1231,8 +1231,8 @@ if (arg0.ndims () != 2 || (arg0.rows () != 1 && arg0.columns () != 1)) error ("diag: V must be a vector"); - octave_idx_type m = args(1).xidx_type_value ("diag: invalid dimensions"); - octave_idx_type n = args(2).xidx_type_value ("diag: invalid dimensions"); + octave_idx_type m = args(1).xidx_type_value ("diag: invalid dimension M"); + octave_idx_type n = args(2).xidx_type_value ("diag: invalid dimension N"); retval = arg0.diag (m, n); } @@ -1274,6 +1274,15 @@ %!assert (diag (int8 ([0, 1, 0, 0; 0, 0, 2, 0; 0, 0, 0, 3; 0, 0, 0, 0]), 1), int8 ([1; 2; 3])) %!assert (diag (int8 ([0, 0, 0, 0; 1, 0, 0, 0; 0, 2, 0, 0; 0, 0, 3, 0]), -1), int8 ([1; 2; 3])) +%!assert (diag (1, 3, 3), diag ([1, 0, 0])) +%!assert (diag (i, 3, 3), diag ([i, 0, 0])) +%!assert (diag (single (1), 3, 3), diag ([single(1), 0, 0])) +%!assert (diag (single (i), 3, 3), diag ([single(i), 0, 0])) +%!assert (diag ([1, 2], 3, 3), diag ([1, 2, 0])) +%!assert (diag ([1, 2]*i, 3, 3), diag ([1, 2, 0]*i)) +%!assert (diag (single ([1, 2]), 3, 3), diag (single ([1, 2, 0]))) +%!assert (diag (single ([1, 2]*i), 3, 3), diag (single ([1, 2, 0]*i))) + %!assert <*37411> (diag (diag ([5, 2, 3])(:,1)), diag([5 0 0 ])) %!assert <*37411> (diag (diag ([5, 2, 3])(:,1), 2), [0 0 5 0 0; zeros(4, 5)]) %!assert <*37411> (diag (diag ([5, 2, 3])(:,1), -2), [[0 0 5 0 0]', zeros(5, 4)]) @@ -1293,17 +1302,10 @@ ## Test input validation %!error <Invalid call to diag> diag () %!error <Invalid call to diag> diag (1,2,3,4) -%!error diag (ones (2), 3, 3) +%!error <V must be a vector> diag (ones (2), 3, 3) %!error diag (1:3, -4, 3) - -%!assert (diag (1, 3, 3), diag ([1, 0, 0])) -%!assert (diag (i, 3, 3), diag ([i, 0, 0])) -%!assert (diag (single (1), 3, 3), diag ([single(1), 0, 0])) -%!assert (diag (single (i), 3, 3), diag ([single(i), 0, 0])) -%!assert (diag ([1, 2], 3, 3), diag ([1, 2, 0])) -%!assert (diag ([1, 2]*i, 3, 3), diag ([1, 2, 0]*i)) -%!assert (diag (single ([1, 2]), 3, 3), diag (single ([1, 2, 0]))) -%!assert (diag (single ([1, 2]*i), 3, 3), diag (single ([1, 2, 0]*i))) +%!error diag (1:3, 4, -3) + */ DEFUN (prod, args, ,