[core][error] gateway and test fixed. 44/17744/3
Cedric Delamarre [Thu, 28 Jan 2016 16:41:37 +0000 (17:41 +0100)]
Change-Id: If665bcd84bb11fab76d5313e9d680b493c32d530

scilab/modules/core/sci_gateway/cpp/sci_error.cpp
scilab/modules/core/tests/nonreg_tests/bug_8781.dia.ref
scilab/modules/core/tests/nonreg_tests/bug_8781.tst

index ca48b1f..bbf058c 100644 (file)
@@ -48,35 +48,27 @@ types::Function::ReturnValue sci_error(types::typed_list &in, int _iRetCount, ty
     if (in.size() == 1)
     {
         // RHS == 1
-        if (in[0]->isString() == false && in[0]->isDouble() == false)
+        if (in[0]->isString() == false)
         {
             Scierror(999, _("%s: Wrong type for input argument #%d.\n"), "error", 1);
             return types::Function::Error;
         }
 
-        if (in[0]->isString() == true)
+        types::String* pStrError = in[0]->getAs<types::String>();
+        std::string strErr = "";
+        char* pstError = NULL;
+        for (int i = 0; i < pStrError->getSize() - 1; i++)
         {
-            types::String* pStrError = in[0]->getAs<types::String>();
-            std::string strErr = "";
-            char* pstError = NULL;
-            for (int i = 0; i < pStrError->getSize() - 1; i++)
-            {
-                pstError = wide_string_to_UTF8(pStrError->get(i));
-                strErr = strErr + std::string(pstError) + std::string("\n");
-                FREE(pstError);
-            }
-
-            pstError = wide_string_to_UTF8(pStrError->get(pStrError->getSize() - 1));
-            strErr = strErr + std::string(pstError);
+            pstError = wide_string_to_UTF8(pStrError->get(i));
+            strErr = strErr + std::string(pstError) + std::string("\n");
             FREE(pstError);
-
-            Scierror(DEFAULT_ERROR_CODE, "%s", strErr.c_str());
-        }
-        else
-        {
-            Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), "error", 1);
-            return types::Function::Error;
         }
+
+        pstError = wide_string_to_UTF8(pStrError->get(pStrError->getSize() - 1));
+        strErr = strErr + std::string(pstError);
+        FREE(pstError);
+
+        Scierror(DEFAULT_ERROR_CODE, "%s", strErr.c_str());
     }
     else
     {
@@ -117,19 +109,25 @@ types::Function::ReturnValue sci_error(types::typed_list &in, int _iRetCount, ty
             pStr = in[0]->getAs<types::String>();
         }
 
+        if (pDbl->isComplex())
+        {
+            Scierror(999, _("%s: Wrong type for input argument #%d.\n"), "error", iPosDouble);
+            return types::Function::Error;
+        }
+
         if (pDbl->isScalar() == false)
         {
-            Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), "error", iPosDouble);
+            Scierror(999, _("%s: Wrong size for input argument #%d.\n"), "error", iPosDouble);
             return types::Function::Error;
         }
 
         if (pStr->isScalar() == false)
         {
-            Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), "error", iPosString);
+            Scierror(999, _("%s: Wrong size for input argument #%d.\n"), "error", iPosString);
             return types::Function::Error;
         }
 
-        if (pDbl->get(0) <= 0 || pDbl->isComplex())
+        if (pDbl->get(0) <= 0)
         {
             Scierror(999, _("%s: Wrong value for input argument #%d: Value greater than 0 expected.\n"), "error", iPosDouble);
             return types::Function::Error;
index 945b6ff..743882a 100644 (file)
@@ -17,6 +17,6 @@
 msg1 = msprintf(gettext("%s: Wrong type for input argument #%d.\n"), "error", 1);
 msg2 = msprintf(gettext("%s: Wrong type for input argument #%d.\n"), "error", 2);
 assert_checkerror("error(1+%i)", msg1);
-assert_checkerror("error(%i, 1)", msg1);
+assert_checkerror("error(%i, 1)", msg2);
 assert_checkerror("error(45+%i, [''A''; ''multi'';''line'';''error'';''message''])", msg1);
 assert_checkerror("error(52, %i)", msg2);
index c4c2869..6c8d574 100644 (file)
@@ -18,6 +18,6 @@
 msg1 = msprintf(gettext("%s: Wrong type for input argument #%d.\n"), "error", 1);
 msg2 = msprintf(gettext("%s: Wrong type for input argument #%d.\n"), "error", 2);
 assert_checkerror("error(1+%i)", msg1);
-assert_checkerror("error(%i, 1)", msg1);
+assert_checkerror("error(%i, 1)", msg2);
 assert_checkerror("error(45+%i, [''A''; ''multi'';''line'';''error'';''message''])", msg1);
 assert_checkerror("error(52, %i)", msg2);