assert: Fixed bugs #9531,9529,9461,10119 65/5465/2
Michaƫl Baudin [Sat, 19 Nov 2011 10:24:13 +0000 (11:24 +0100)]
Change-Id: I8a66c06272f9db1a441630b1de4a01a151d1d856

18 files changed:
scilab/CHANGES_5.4.X
scilab/modules/development_tools/help/en_US/assert/assert_checkalmostequal.xml
scilab/modules/development_tools/macros/assert/assert_checkalmostequal.sci
scilab/modules/development_tools/macros/assert/assert_checkequal.sci
scilab/modules/development_tools/tests/nonreg_tests/bug_10119.dia.ref [new file with mode: 0644]
scilab/modules/development_tools/tests/nonreg_tests/bug_10119.tst [new file with mode: 0644]
scilab/modules/development_tools/tests/nonreg_tests/bug_9461.dia.ref [new file with mode: 0644]
scilab/modules/development_tools/tests/nonreg_tests/bug_9461.tst [new file with mode: 0644]
scilab/modules/development_tools/tests/nonreg_tests/bug_9529.tst [new file with mode: 0644]
scilab/modules/development_tools/tests/nonreg_tests/bug_9531.dia.ref [new file with mode: 0644]
scilab/modules/development_tools/tests/nonreg_tests/bug_9531.tst [new file with mode: 0644]
scilab/modules/development_tools/tests/unit_tests/assert/checkequal.dia.ref
scilab/modules/development_tools/tests/unit_tests/assert/checkequal.tst
scilab/modules/development_tools/tests/unit_tests/assert/cond2reltol.dia.ref
scilab/modules/development_tools/tests/unit_tests/assert/cond2reltol.tst
scilab/modules/overloading/macros/%sp_string.sci [new file with mode: 0644]
scilab/modules/overloading/tests/unit_tests/sparse.dia.ref [new file with mode: 0644]
scilab/modules/overloading/tests/unit_tests/sparse.tst [new file with mode: 0644]

index d4f3a5f..9354849 100644 (file)
@@ -747,6 +747,11 @@ Bug fixes:
 
 * bug 9452 fixed - It was impossible to download Intel MKL throw a proxy.
 
+* bug 9461 fixed - The assert_checkalmostequal function did not manage 
+                   sparse matrices.
+                   The assert_checkalmostequal function did not manage 
+                   hypermatrices.
+
 * bug 9479 fixed - Typo fixed (intput => input).
 
 * bug 9498 fixed - A long history caused Scilab startup to be very long.
@@ -754,6 +759,8 @@ Bug fixes:
 * bug 9510 fixed - export_to_hdf5 did not return %f when trying to export
                    unmanaged type (function, macro, ...)
 
+* bug 9531 fixed - assert_checkequal failed with mlist
+
 * bug 9540 fixed - MKL Pentium 4 target was not downloaded by installer on Windows.
 
 * bug 9542 fixed - During export operation the file could be locked by an other
@@ -872,6 +879,8 @@ Bug fixes:
 
 * bug 10105 fixed - Focus was not given to the prompt when outputview had it.
 
+* bug 10119 fixed - assert_checkequal did not support sparse complex doubles
+
 * bug 10179 fixed - Weird behaviour with evstr.
 
 * bug 10289 fixed - xload returns a better error message when a file does
@@ -880,3 +889,5 @@ Bug fixes:
 * bug 10292 fixed - Improved description of the help page of modulo.
 
 * bug 10293 fixed - Improved description of the help page of bvode.
+
+
index 8b97c1c..3f1480e 100644 (file)
       <varlistentry>
         <term>computed:</term>
         <listitem>
-          <para> a 1-by-1 matrix of doubles, the computed result</para>
+          <para> a matrix of doubles, a sparse matrix of doubles, or an hypermatrix of doubles, the computed result</para>
         </listitem>
       </varlistentry>
       <varlistentry>
         <term>expected :</term>
         <listitem>
-          <para> a 1-by-1 matrix of doubles, the expected result</para>
+          <para> a matrix of doubles, a sparse matrix of doubles, or an hypermatrix of doubles, the expected result</para>
         </listitem>
       </varlistentry>
       <varlistentry>
index 60f07d3..1bf5e8e 100644 (file)
@@ -1,5 +1,5 @@
 // Copyright (C) 2008 - 2009 - INRIA - Michael Baudin
-// Copyright (C) 2009 - 2010 - DIGITEO - Michael Baudin
+// Copyright (C) 2009 - 2011 - DIGITEO - Michael Baudin
 //
 // This file must be used under the terms of the CeCILL.
 // This source file is licensed as described in the file COPYING, which
@@ -24,11 +24,11 @@ function [flag,errmsg] = assert_checkalmostequal ( varargin )
   comptype = argindefault ( rhs , varargin , 5 , "element" )
   //
   // Check types of variables
-  if ( typeof(computed) <> "constant" ) then
+  if ( and(typeof(computed) <> ["constant" "sparse" "hypermat"]) ) then
     errmsg = sprintf ( gettext ( "%s: Wrong type for input argument #%d: Matrix expected.\n") , "assert_checkalmostequal" , 1 )
     error(errmsg)
   end
-  if ( typeof(expected) <> "constant" ) then
+  if ( and(typeof(expected) <> ["constant" "sparse" "hypermat"]) ) then
     errmsg = sprintf ( gettext ( "%s: Wrong type for input argument #%d: Matrix expected.\n") , "assert_checkalmostequal" , 2 )
     error(errmsg)
   end
index 57bab9d..b6e417a 100644 (file)
@@ -56,8 +56,16 @@ function [flag,errmsg] = assert_checkequal ( computed , expected )
     end
     //
     // Check sizes of variables
-    ncom = size(computed)
-    nexp = size(expected)
+    if ( or(type(computed)==[16 17]) ) then
+        ncom = length(computed)
+    else
+        ncom = size(computed)
+    end
+    if ( or(type(expected)==[16 17]) ) then
+        nexp = length(expected)
+    else
+        nexp = size(expected)
+    end
     if ( or(ncom <> nexp) ) then
         errmsg = sprintf ( gettext ( "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n") , "assert_checkequal" , 1 , 2 )
         error(errmsg)
@@ -98,14 +106,34 @@ function [flag,errmsg] = assert_checkequal ( computed , expected )
     else
         // Change the message if the matrix contains more than one value
         if ( size(expected,"*") == 1 ) then
-            estr = string(expected)
+            if ( typeof(expected) == "sparse") then
+                val = full(expected)
+            else
+                val = expected
+            end
+            estr = string(val)
         else
-            estr = "[" + string(expected(1)) + " ...]"
+            if ( typeof(expected) == "sparse") then
+                val = full(expected(1))
+            else
+                val = expected(1)
+            end
+            estr = "[" + string(val) + " ...]"
         end
         if ( size(computed,"*") == 1 ) then
-            cstr = string(computed)
+            if ( typeof(computed) == "sparse") then
+                val = full(computed)
+            else
+                val = computed
+            end
+            cstr = string(val)
         else
-            cstr = "[" + string(computed(1)) + " ...]"
+            if ( typeof(computed) == "sparse") then
+                val = full(computed(1))
+            else
+                val = computed(1)
+            end
+            cstr = "[" + string(val) + " ...]"
         end
         errmsg = msprintf(gettext("%s: Assertion failed: expected = %s while computed = %s"),"assert_checkequal",estr,cstr)
         if ( lhs < 2 ) then
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_10119.dia.ref b/scilab/modules/development_tools/tests/nonreg_tests/bug_10119.dia.ref
new file mode 100644 (file)
index 0000000..42c8b05
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// <-- Non-regression test for bug 10119 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10119
+//
+// <-- Short Description -->
+// assert_checkequal does not support sparse complex doubles
+value = sprand(100, 100, 0.01) + sprand(100, 100, 0.01) * %i;
+value2 = sprand(100, 100, 0.01) + sprand(100, 100, 0.01) * %i;
+instr = "assert_checkequal(value, value2)";
+ierr = execstr(instr,"errcatch");
+if ierr <> 10000 then bugmes();quit;end;
+//
+value = sprand(1, 1, 0.01) + sprand(1, 1, 0.01) * %i;
+value2 = sprand(1, 1, 0.01) + sprand(1, 1, 0.01) * %i;
+instr = "assert_checkequal(value, value2)";
+ierr = execstr(instr,"errcatch");
+if ierr <> 10000 then bugmes();quit;end;
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_10119.tst b/scilab/modules/development_tools/tests/nonreg_tests/bug_10119.tst
new file mode 100644 (file)
index 0000000..2d626c8
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 10119 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10119
+//
+// <-- Short Description -->
+// assert_checkequal does not support sparse complex doubles
+
+
+value = sprand(100, 100, 0.01) + sprand(100, 100, 0.01) * %i;
+value2 = sprand(100, 100, 0.01) + sprand(100, 100, 0.01) * %i;
+instr = "assert_checkequal(value, value2)";
+ierr = execstr(instr,"errcatch");
+if ierr <> 10000 then pause,end;
+//
+value = sprand(1, 1, 0.01) + sprand(1, 1, 0.01) * %i;
+value2 = sprand(1, 1, 0.01) + sprand(1, 1, 0.01) * %i;
+instr = "assert_checkequal(value, value2)";
+ierr = execstr(instr,"errcatch");
+if ierr <> 10000 then pause,end;
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_9461.dia.ref b/scilab/modules/development_tools/tests/nonreg_tests/bug_9461.dia.ref
new file mode 100644 (file)
index 0000000..655cbcd
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// <-- Non-regression test for bug 9461 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9461
+//
+// <-- Short Description -->
+// The assert_checkalmostequal function does not manage sparse matrices.
+A=spzeros(2,2);
+B=spzeros(2,2);
+assert_checkalmostequal(A,B);
+A = zeros(2,3,4);
+B = zeros(2,3,4);
+assert_checkalmostequal(A,B);
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_9461.tst b/scilab/modules/development_tools/tests/nonreg_tests/bug_9461.tst
new file mode 100644 (file)
index 0000000..c48015e
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 9461 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9461
+//
+// <-- Short Description -->
+// The assert_checkalmostequal function does not manage sparse matrices.
+
+A=spzeros(2,2);
+B=spzeros(2,2);
+assert_checkalmostequal(A,B);
+
+A = zeros(2,3,4);
+B = zeros(2,3,4);
+assert_checkalmostequal(A,B);
+
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_9529.tst b/scilab/modules/development_tools/tests/nonreg_tests/bug_9529.tst
new file mode 100644 (file)
index 0000000..91ec41e
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+//  <-- NOT FIXED -->
+
+// <-- Non-regression test for bug 9529 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9529
+//
+// <-- Short Description -->
+// assert_checkequal fails with void element in a list
+
+
+voidelement_ref=list(1,,3);
+voidelement=list(2,,3);
+t = (voidelement_ref(2)==voidelement(2));
+t = (voidelement_ref==voidelement);
+assert_checkequal(voidelement, voidelement_ref);
+
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_9531.dia.ref b/scilab/modules/development_tools/tests/nonreg_tests/bug_9531.dia.ref
new file mode 100644 (file)
index 0000000..7bd48ca
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// <-- Non-regression test for bug 9531 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9531
+//
+// <-- Short Description -->
+// assert_checkequal fails with mlist
+M_ref=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+M_ref2=M_ref; 
+assert_checkequal(M_ref, M_ref2);
+//
+M_ref=tlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+M_ref2=M_ref; 
+assert_checkequal(M_ref, M_ref2);
diff --git a/scilab/modules/development_tools/tests/nonreg_tests/bug_9531.tst b/scilab/modules/development_tools/tests/nonreg_tests/bug_9531.tst
new file mode 100644 (file)
index 0000000..36d0da2
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 9531 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9531
+//
+// <-- Short Description -->
+// assert_checkequal fails with mlist
+
+
+M_ref=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+M_ref2=M_ref; 
+assert_checkequal(M_ref, M_ref2);
+//
+M_ref=tlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+M_ref2=M_ref; 
+assert_checkequal(M_ref, M_ref2);
+
index b74b9c6..c10766d 100644 (file)
@@ -102,3 +102,51 @@ checkassert ( flag , errmsg , "success" );
 //
 [flag , errmsg] = assert_checkequal(complex(%inf,%nan),complex(%inf,%nan));
 checkassert ( flag , errmsg , "success" );
+//
+////////////////////////////////////////////////////////
+// Check various types
+//
+//  Mlist
+s=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+t=s; 
+assert_checkequal(s, t);
+//
+//  Tlist
+s=tlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+t=s; 
+assert_checkequal(s, t);
+//
+// Polynomial
+s=poly(0,"s");
+t=s;
+assert_checkequal(s, t);
+//
+// Sparse
+s=spzeros(3,5);
+t=s;
+assert_checkequal(s, t);
+//
+// Boolean
+s=(ones(3,5)==ones(3,5));
+t=s;
+assert_checkequal(s, t);
+//
+// Sparse Boolean
+s=(spzeros(3,5)==spzeros(3,5));
+t=s;
+assert_checkequal(s, t);
+//
+// Integer  8
+s=int8(3);
+t=s;
+assert_checkequal(s, t);
+//
+// String
+s="foo";
+t=s;
+assert_checkequal(s, t);
+//
+// List
+s=list("foo",2);
+t=s;
+assert_checkequal(s, t);
index 2fe96da..bfea7b5 100644 (file)
@@ -108,3 +108,67 @@ checkassert ( flag , errmsg , "success" );
 //
 [flag , errmsg] = assert_checkequal(complex(%inf,%nan),complex(%inf,%nan));
 checkassert ( flag , errmsg , "success" );
+//
+////////////////////////////////////////////////////////
+// Check various types
+//
+//  Mlist
+s=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+t=s; 
+assert_checkequal(s, t);
+//
+//  Tlist
+s=tlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
+t=s; 
+assert_checkequal(s, t);
+//
+// Polynomial
+s=poly(0,"s");
+t=s;
+assert_checkequal(s, t);
+//
+// Sparse
+s=spzeros(3,5);
+t=s;
+assert_checkequal(s, t);
+//
+// Boolean
+s=(ones(3,5)==ones(3,5));
+t=s;
+assert_checkequal(s, t);
+//
+// Sparse Boolean
+s=(spzeros(3,5)==spzeros(3,5));
+t=s;
+assert_checkequal(s, t);
+//
+// Integer  8
+s=int8(3);
+t=s;
+assert_checkequal(s, t);
+//
+// String
+s="foo";
+t=s;
+assert_checkequal(s, t);
+//
+// List
+s=list("foo",2);
+t=s;
+assert_checkequal(s, t);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
index 41528a9..3fcee5e 100644 (file)
@@ -43,7 +43,7 @@ expected = [
     1.000000000000000000D+00  
     1.000000000000000000D+00  
 ];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 //
 // With offset
 computed = assert_cond2reltol ( 1.e2 , [5 4 3 2 1 0 -1 -2 -3 -4 -5]' );
@@ -60,12 +60,12 @@ expected = [
     1.110223024625162227D-10  
     1.110223024625162331D-09  
 ];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 //
 computed = assert_cond2reltol ( 1.e14 , [0 -1 -2 -3] );
 expected = [1.110223024625162265D-02    1.110223024625162230D-01    1.000000000000000000D+00    1.000000000000000000D+00];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 //
 computed = assert_cond2reltol ( 1.e2 , [0 1 2 3] ) ;
 expected = [1.110223024625162220D-14    1.110223024625162260D-15    1.110223024625162210D-16    1.110223024625162210D-16];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
index 123a821..55cb0c0 100644 (file)
@@ -46,7 +46,7 @@ expected = [
     1.000000000000000000D+00  
     1.000000000000000000D+00  
 ];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 //
 // With offset
 computed = assert_cond2reltol ( 1.e2 , [5 4 3 2 1 0 -1 -2 -3 -4 -5]' );
@@ -63,13 +63,13 @@ expected = [
     1.110223024625162227D-10  
     1.110223024625162331D-09  
 ];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 //
 computed = assert_cond2reltol ( 1.e14 , [0 -1 -2 -3] );
 expected = [1.110223024625162265D-02    1.110223024625162230D-01    1.000000000000000000D+00    1.000000000000000000D+00];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 //
 computed = assert_cond2reltol ( 1.e2 , [0 1 2 3] ) ;
 expected = [1.110223024625162220D-14    1.110223024625162260D-15    1.110223024625162210D-16    1.110223024625162210D-16];
-MY_assert_equal ( computed , expected );
+assert_checkalmostequal ( computed , expected , 100*%eps);
 
diff --git a/scilab/modules/overloading/macros/%sp_string.sci b/scilab/modules/overloading/macros/%sp_string.sci
new file mode 100644 (file)
index 0000000..08f1a7e
--- /dev/null
@@ -0,0 +1,14 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+// 
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution.  The terms
+// are also available at    
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+function s=%sp_string(A)
+    [ij,v,mn]=spget(A);
+    s = msprintf("(%d,%d) sparse matrix",mn(1),mn(2))
+    s = [s; "("+string(ij(:,1)) + "," + string(ij(:,2))+")    " + string(v)]
+endfunction    
+
diff --git a/scilab/modules/overloading/tests/unit_tests/sparse.dia.ref b/scilab/modules/overloading/tests/unit_tests/sparse.dia.ref
new file mode 100644 (file)
index 0000000..bd9dd39
--- /dev/null
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+A = spzeros(3,2);
+A(3,1) = 2;
+string(A)
+ ans  =
+!(3,2) sparse matrix  !
+!                     !
+!(3,1)    2           !
diff --git a/scilab/modules/overloading/tests/unit_tests/sparse.tst b/scilab/modules/overloading/tests/unit_tests/sparse.tst
new file mode 100644 (file)
index 0000000..e243d5e
--- /dev/null
@@ -0,0 +1,13 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+A = spzeros(3,2);
+A(3,1) = 2;
+string(A)
+