* Bug #13780 fixed - size with two input and output arguments must return an error. 32/17032/3
Adeline CARNIS [Wed, 12 Aug 2015 15:38:47 +0000 (17:38 +0200)]
Change-Id: I2c590e4535926c0eca2bd55831970c55f8bdcbe0

scilab/CHANGES_6.0.X
scilab/modules/elementary_functions/sci_gateway/cpp/sci_size.cpp
scilab/modules/elementary_functions/tests/nonreg_tests/bug_13780.dia.ref [new file with mode: 0644]
scilab/modules/elementary_functions/tests/nonreg_tests/bug_13780.tst [new file with mode: 0644]

index ecdf380..b4ff4d7 100644 (file)
@@ -9,6 +9,8 @@ Scilab Bug Fixes
 
 * Bug #13872 fixed - Non regression test added for unique function (the indices returned were wrong)
 
+* Bug #13780 fixed - size with two input and output arguments did not return an error.
+
 * Bug #14020 fixed - Incorrect carriage return ascii code.
 
 * Bug #14025 fixed - head_comments did not take into account compiled functions.
@@ -16,7 +18,6 @@ Scilab Bug Fixes
 * Bug #14049 fixed - genlib hangs if an unexpected endfunction occurs.
 
 
-
             Changes between version 5.5.2 and 6.0.0-alpha-1 of Scilab
             =========================================================
 
index c156076..2b1aa1d 100644 (file)
@@ -89,6 +89,11 @@ Function::ReturnValue sci_size(types::typed_list &in, int _iRetCount, types::typ
 
             if (in.size() == 2)
             {
+                if (_iRetCount == 2)
+                {
+                    Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+                    return Function::Error;
+                }
                 iMode = getMode(in, 1, 0);
                 if (iMode == -2)
                 {
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13780.dia.ref b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13780.dia.ref
new file mode 100644 (file)
index 0000000..d74dba7
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 13780 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13780
+//
+// <-- Short Description -->
+//    size with two input and output arguments did not return an error.
+// =============================================================================
+assert_checkfalse(execstr("[r,c] = size(ones(4,2), ""*"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+assert_checkerror("[r,c] = size(ones(4,2), ""*"")", refMsg);
+assert_checkfalse(execstr("[r,c] = size(ones(4,2), ""r"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+assert_checkerror("[r,c] = size(ones(4,2), ""*"")", refMsg);
+assert_checkfalse(execstr("[r,c] = size(ones(4,2), ""c"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+assert_checkerror("[r,c] = size(ones(4,2), ""*"")", refMsg);
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13780.tst b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_13780.tst
new file mode 100644 (file)
index 0000000..3773c26
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 13780 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13780
+//
+// <-- Short Description -->
+//    size with two input and output arguments did not return an error.
+// =============================================================================
+
+assert_checkfalse(execstr("[r,c] = size(ones(4,2), ""*"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+assert_checkerror("[r,c] = size(ones(4,2), ""*"")", refMsg);
+
+assert_checkfalse(execstr("[r,c] = size(ones(4,2), ""r"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+assert_checkerror("[r,c] = size(ones(4,2), ""*"")", refMsg);
+
+assert_checkfalse(execstr("[r,c] = size(ones(4,2), ""c"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "size", 1);
+assert_checkerror("[r,c] = size(ones(4,2), ""*"")", refMsg);