* Bug #9394 fixed - Parameters: is_params() recognized the "plist" field. 56/12456/5
Paul BIGNIER [Fri, 6 Sep 2013 12:07:00 +0000 (14:07 +0200)]
Change-Id: Ib25a77748faefc17f6d5a50e142f98a53c244142

scilab/CHANGES_5.5.X
scilab/modules/parameters/macros/is_param.sci
scilab/modules/parameters/tests/nonreg_tests/bug_9394.dia.ref [new file with mode: 0644]
scilab/modules/parameters/tests/nonreg_tests/bug_9394.tst [new file with mode: 0644]

index 3f6d26c..988937f 100644 (file)
@@ -376,6 +376,8 @@ Bug Fixes
 
 * Bug #9385 fixed - The type checking in trigonometric functions has been added.
 
+* Bug #9394 fixed - is_params recognized "plist" as an existing field.
+
 * Bug #9395 fixed - add_params did not check its input arguments.
 
 * Bug #9396 fixed - add_params accepted duplicate keys.
index 882fb72..90d1dec 100644 (file)
@@ -7,17 +7,31 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 
-function [result,err] = is_param(list_name,param_name)
-    [nargout,nargin] = argn();
+function [result, err] = is_param(list_name, param_name)
+
+    [nargout, nargin] = argn();
+
+    if nargin <> 2 then
+        error(sprintf(gettext("%s: Wrong number of input arguments: %d expected.\n"), "is_param", 2));
+    end
+
     result = [];
-    if typeof(list_name)=="plist" then
-        result = or(getfield(1,list_name)==param_name);
-        if nargout==2 then err = %F; end
+    if typeof(list_name) == "plist" then
+        if typeof(param_name) == "string" then
+            result_vec = getfield(1, list_name) == param_name;
+            result = or(result_vec(2:$));
+            if nargout == 2 then
+                err = %F;
+            end
+        else
+            error(sprintf(gettext("%s: Wrong type for input argument #%d: %s expected.\n"), "is_param", 2, "String"));
+        end
     else
-        if nargout==2 then
+        if nargout == 2 then
             err = %T;
         else
             error(sprintf(gettext("%s: Wrong type for input argument #%d: %s expected.\n"), "is_param", 1, "plist"));
         end
     end
+
 endfunction
diff --git a/scilab/modules/parameters/tests/nonreg_tests/bug_9394.dia.ref b/scilab/modules/parameters/tests/nonreg_tests/bug_9394.dia.ref
new file mode 100644 (file)
index 0000000..4caa471
--- /dev/null
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9394 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9394
+//
+// <-- Short Description -->
+// is_params() recognized the "plist" field.
+p = init_param();
+bool  = is_param(p, "plist");
+assert_checkequal(bool, %f);
+p = add_param(p, "field1", 10);
+bool  = is_param(p, "plist");
+bool2 = is_param(p, "field1");
+assert_checkequal(bool, %f);
+assert_checkequal(bool2, %t);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s expected.\n"), "is_param", 2, "String");
+assert_checkerror("is_param(p, 1);", refMsg);
+assert_checkerror("is_param(p, %t);", refMsg);
diff --git a/scilab/modules/parameters/tests/nonreg_tests/bug_9394.tst b/scilab/modules/parameters/tests/nonreg_tests/bug_9394.tst
new file mode 100644 (file)
index 0000000..cac81f5
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9394 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9394
+//
+// <-- Short Description -->
+// is_params() recognized the "plist" field.
+
+p = init_param();
+bool  = is_param(p, "plist");
+assert_checkequal(bool, %f);
+p = add_param(p, "field1", 10);
+bool  = is_param(p, "plist");
+bool2 = is_param(p, "field1");
+assert_checkequal(bool, %f);
+assert_checkequal(bool2, %t);
+
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s expected.\n"), "is_param", 2, "String");
+assert_checkerror("is_param(p, 1);", refMsg);
+assert_checkerror("is_param(p, %t);", refMsg);