iconvert corrected and test updated about 64bit integer. 84/11484/6
Cedric Delamarre [Tue, 14 May 2013 08:20:55 +0000 (10:20 +0200)]
Change-Id: I120db243799f24ab7784b63309e700b12954e091

scilab/modules/integer/macros/iconvert.sci
scilab/modules/integer/tests/nonreg_tests/bug_10782.dia.ref
scilab/modules/integer/tests/nonreg_tests/bug_10782.tst

index 4f76f2f..693b446 100644 (file)
@@ -13,19 +13,27 @@ function x = iconvert(a,typeToConvert)
     [lhs, rhs] = argn();
 
     if rhs <> 2 then
-        error(msprintf(_("%s: Wrong number of input argument(s): %d expected."), "iconvert", 2));
+        error(msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "iconvert", 2));
     end
 
     if lhs <> 1 then
-        error(msprintf(_("%s: Wrong number of output argument(s): %d expected."), "iconvert", 1));
+        error(msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "iconvert", 1));
     end
 
     if typeof(a) <> "constant" & type(a) <> 8 & typeof(a) <> "boolean" then
-        error(msprintf(_("%s: Wrong type for input argument #%d: ''%s'', ''%s'' or ''%s'' expected."), "iconvert", 1, "integer", "boolean", "double"));
+        error(msprintf(_("%s: Wrong type for input argument #%d: ''%s'', ''%s'' or ''%s'' expected.\n"), "iconvert", 1, "integer", "boolean", "double"));
+    end
+
+    if typeof(a) == "constant" & isreal(a) == %f then
+        error(msprintf(_("%s: Wrong type for argument #%d: Real matrix expected.\n"), "iconvert", 1));
+    end
+
+    if floor(typeToConvert) <> typeToConvert then
+        error(msprintf(_("%s: Wrong value for input argument #%d: An integer value expected.\n"), "iconvert", 2));
     end
 
     if typeof(typeToConvert) <> "constant" | size(typeToConvert, "*") <> 1 then
-        error(msprintf(_("%s: Wrong type for argument %d: Real scalar expected."), "iconvert", 2));
+        error(msprintf(_("%s: Wrong size for argument #%d: Real scalar expected.\n"), "iconvert", 2));
     end
 
     if typeToConvert == 0 then
@@ -43,7 +51,7 @@ function x = iconvert(a,typeToConvert)
     castFunction(19) = {double};
 
     if or(typeToConvert == [1,2,4,8,11,12,14,18,19]) == %f then
-        error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set  {%s}."), "iconvert", 2, "0, 1, 2, 4, 8, 11, 12, 14, 18"));
+        error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "iconvert", 2, "0, 1, 2, 4, 8, 11, 12, 14, 18"));
     end
     castResult = castFunction{typeToConvert};
     x = castResult(a);
index 2711671..3f4065d 100644 (file)
@@ -41,7 +41,7 @@ assert_checkequal(typeof(y), "uint16");
 y = iconvert(B, 14); // uint32
 assert_checkequal(type(y), 8);
 assert_checkequal(typeof(y), "uint32");
-msgerr = msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "iconvert", 2,"0, 1, 2, 4, 11, 12, 14");
+msgerr = msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "iconvert", 2,"0, 1, 2, 4, 8, 11, 12, 14, 18");
 assert_checkerror ("y = iconvert(B, 20);", msgerr);
 msgerr = msprintf(gettext("%s: Wrong type for argument #%d: Real matrix expected.\n"), "iconvert", 1);
 assert_checkerror ("y = iconvert(%i, 0);", msgerr);
index d253ad3..61b02ee 100644 (file)
@@ -51,7 +51,7 @@ y = iconvert(B, 14); // uint32
 assert_checkequal(type(y), 8);
 assert_checkequal(typeof(y), "uint32");
 
-msgerr = msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "iconvert", 2,"0, 1, 2, 4, 11, 12, 14");
+msgerr = msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "iconvert", 2,"0, 1, 2, 4, 8, 11, 12, 14, 18");
 assert_checkerror ("y = iconvert(B, 20);", msgerr);
 
 msgerr = msprintf(gettext("%s: Wrong type for argument #%d: Real matrix expected.\n"), "iconvert", 1);