* Bug #12783 fixed - There were some inconsistent error messages in dsearch(). 24/12224/2
Charlotte HECQUET [Mon, 5 Aug 2013 08:04:08 +0000 (10:04 +0200)]
Change-Id: Ide7cc6df67f4cdd3ba78d348f1c182758f4d7162

scilab/CHANGES_5.5.X
scilab/modules/elementary_functions/sci_gateway/fortran/sci_f_dsearch.f
scilab/modules/elementary_functions/tests/nonreg_tests/bug_12783.dia.ref [new file with mode: 0644]
scilab/modules/elementary_functions/tests/nonreg_tests/bug_12783.tst [new file with mode: 0644]

index 5d89835..500c182 100644 (file)
@@ -522,3 +522,5 @@ Bug fixes
 * Bug #12775 fixed - Some related functions were not listed in "See also" section of routh_t help page.
 
 * Bug #12779 fixed - savewave() had a miscoding in the internal function write_wavedat().
+
+* Bug #12783 fixed - There were some inconsistent error messages in dsearch().
index a1503c9..556c990 100644 (file)
@@ -36,7 +36,7 @@ c     EXTERNAL API FUNCTIONS
       external checkrhs, checklhs, getsmat, getrvect, cremat, getrmat
 
 c     LOCAL VAR
-      integer topk, topl
+      integer topk, topl, il
       integer mX, nX, lX, mval, nval, lval, mch, nch, lch, nlch
       integer lind, mocc, nocc, locc, linfo, lc, j
       character*1 ch
@@ -68,7 +68,13 @@ c     TEXT
          return
       endif
 
-c     get val 
+c     get val
+      il = iadr(lstk(top))
+      if (istk(il) .ne. 1) then
+        err = 2
+        call error(202)
+        return
+      endif
       if( .not. getrvect(fname, topk, top, mval, nval, lval) ) return
       if (ch.eq.'d') then
          if (mval*nval.lt.1) then
@@ -104,6 +110,12 @@ c     get val
       top = top - 1
       
 c     get X
+      il = iadr(lstk(top))
+      if (istk(il) .ne. 1) then
+        err = 1
+        call error(202)
+        return
+      endif
       if( .not. getrmat(fname, topk, top, mX, nX, lX) ) return
 
 c     reserve space for ind
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12783.dia.ref b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12783.dia.ref
new file mode 100644 (file)
index 0000000..320c2bd
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12783 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12783
+//
+// <-- Short Description -->
+// There are some inconsistent error messages in dsearch
+errmsg1 = msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"), "dsearch", 1);
+assert_checkerror("dsearch(int8([ 1 5 7]), [3 4 7 10], ""d"")", errmsg1);
+errmsg2 = msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"), "dsearch", 2);
+assert_checkerror("dsearch([1 5 7], int8([3 4 7 10]), ""d"")", errmsg2);
diff --git a/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12783.tst b/scilab/modules/elementary_functions/tests/nonreg_tests/bug_12783.tst
new file mode 100644 (file)
index 0000000..5101a6f
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 12783 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12783
+//
+// <-- Short Description -->
+// There are some inconsistent error messages in dsearch
+
+errmsg1 = msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"), "dsearch", 1);
+assert_checkerror("dsearch(int8([ 1 5 7]), [3 4 7 10], ""d"")", errmsg1);
+
+errmsg2 = msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"), "dsearch", 2);
+assert_checkerror("dsearch([1 5 7], int8([3 4 7 10]), ""d"")", errmsg2);