changeset 202:9bc6070c041c

Fix to resize from zero-size matrix, and test for it
author Chris Cannam
date Mon, 06 May 2013 18:22:41 +0100
parents 71a09107ee3e
children ee3fbcc779d9
files yetilab/matrix/matrix.yeti yetilab/matrix/test/test_matrix.yeti
diffstat 2 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/yetilab/matrix/matrix.yeti	Mon May 06 17:57:43 2013 +0100
+++ b/yetilab/matrix/matrix.yeti	Mon May 06 18:22:41 2013 +0100
@@ -234,8 +234,10 @@
     fi;
 
 resizedTo newsize m =
-    if newsize == m.size then
+   (if newsize == m.size then
         m
+    elif m.size.rows == 0 or m.size.columns == 0 then
+        zeroMatrixWithTypeOf m newsize;
     else
         growrows = newsize.rows - m.size.rows;
         growcols = newsize.columns - m.size.columns;
@@ -258,7 +260,7 @@
                        [m, zeroMatrixWithTypeOf m (m.size with { columns = growcols })]
                 fi
             fi
-    fi;
+    fi);
 
 {
     generate is (number -> number -> number) -> { .rows is number, .columns is number } -> matrix,
--- a/yetilab/matrix/test/test_matrix.yeti	Mon May 06 17:57:43 2013 +0100
+++ b/yetilab/matrix/test/test_matrix.yeti	Mon May 06 18:22:41 2013 +0100
@@ -255,7 +255,11 @@
         compareMatrices
            (mat.resizedTo { rows = 1, columns = 1 }
                (newMatrix (ColumnMajor ()) [[1,4],[2,5],[3,6]]))
-           (newMatrix (RowMajor ()) [[1]])
+           (newMatrix (RowMajor ()) [[1]]) and
+        compareMatrices
+           (mat.resizedTo { rows = 2, columns = 3 }
+               (mat.zeroSizeMatrix ()))
+           (newMatrix (RowMajor ()) [[0,0,0],[0,0,0]])
 ),
 
 "zeroSizeMatrix-\(name)": \(