Index: trunk/psLib/test/dataManip/tst_psMatrix01.c
===================================================================
--- trunk/psLib/test/dataManip/tst_psMatrix01.c	(revision 759)
+++ trunk/psLib/test/dataManip/tst_psMatrix01.c	(revision 798)
@@ -1,160 +1,81 @@
+/** @file  tst_psMatrix_01.c
+ *
+ *  @brief Test driver for psMatrix transpose function
+ *
+ *  This test driver contains the following tests for psMatrix test point 1:
+ *     A)  Create input and output images
+ *     B)  Transpose input image into output image
+ *     C)  Transpose input image into auto allocated NULL output image 
+ *     D)  Free images and check for leaks
+ *
+ *  @author  Ross Harman, MHPCC
+ *
+ *  @version $Revision: 1.2 $  $Name: not supported by cvs2svn $
+ *  @date  $Date: 2004-05-28 02:52:23 $
+ *
+ *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
+ *
+ */
+
 #include "pslib.h"
-//#include <gsl/gsl_matrix.h>
+#include "psTest.h"
 
-int main(void)
+#define PRINT_MATRIX(IMAGE)                         \
+for(int i=IMAGE->numRows-1; i>-1; i--) {        \
+    for(int j=0; j<IMAGE->numCols; j++) {       \
+        printf("%f ", IMAGE->data.F64[i][j]);   \
+    }                                          \
+    printf("\n");                              \
+}
+
+int main(int argc,
+         char* argv[])
 {
 
-    psImage *d = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    psImage *dout = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    d->data.F64[0][0] = 1;
-    d->data.F64[0][1] = 2;
-    d->data.F64[0][2] = 3;
-    d->data.F64[1][0] = 4;
-    d->data.F64[1][1] = 5;
-    d->data.F64[1][2] = 6;
-    d->data.F64[2][0] = 7;
-    d->data.F64[2][1] = 8;
-    d->data.F64[2][2] = 9;
 
-    psMatrixTranspose(dout, d);
-    printf("%f\n", dout->data.F64[2][1]);
-
-    psImage *e = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    e->data.F64[0][0] = 1;
-    e->data.F64[0][1] = 2;
-    e->data.F64[0][2] = 3;
-    e->data.F64[1][0] = 4;
-    e->data.F64[1][1] = 5;
-    e->data.F64[1][2] = 6;
-    e->data.F64[2][0] = 7;
-    e->data.F64[2][1] = 8;
-    e->data.F64[2][2] = 9;
-
-    //    psImage *f = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-
-    //    char x = '+';
-
-    //    psMatrixOp(f, d, &x, e);
-
-    psImage *g = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    g->data.F64[0][0] =  2;
-    g->data.F64[0][1] =  4;
-    g->data.F64[0][2] =  3;
-    g->data.F64[1][0] =  0;
-    g->data.F64[1][1] =  1;
-    g->data.F64[1][2] = -1;
-    g->data.F64[2][0] =  3;
-    g->data.F64[2][1] =  5;
-    g->data.F64[2][2] =  7;
-
-    psImage *h = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    float det;
-
-    h = psMatrixInvert(h, g, &det);
-
-    int i;
-    int j;
-
-    for(i=0; i<3; i++)
-        for(j=0; j<3; j++) {
-            printf("inv %f\n", h->data.F64[i][j]);
-        }
-
-    printf("det %f\n", psMatrixDeterminant(g));
-
-    for(i=0; i<3; i++)
-        for(j=0; j<3; j++) {
-            printf("g %f\n", g->data.F64[i][j]);
-        }
+    // Test A - Create input and output images
+    printPositiveTestHeader(stdout, "psMatrix", "Create input and output images");
+    psImage *inImage = (psImage*)psImageAlloc(3, 3, PS_TYPE_F64);
+    psImage *outImage = (psImage*)psImageAlloc(3, 3, PS_TYPE_F64);
+    inImage->data.F64[0][0] = 1;
+    inImage->data.F64[0][1] = 2;
+    inImage->data.F64[0][2] = 3;
+    inImage->data.F64[1][0] = 4;
+    inImage->data.F64[1][1] = 5;
+    inImage->data.F64[1][2] = 6;
+    inImage->data.F64[2][0] = 7;
+    inImage->data.F64[2][1] = 8;
+    inImage->data.F64[2][2] = 9;
+    PRINT_MATRIX(inImage);
+    printFooter(stdout, "psMatrix", "Create input and output images", true);
 
 
-    psImage *luImage = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    psVector *perm = (psVector*)psVectorAlloc(3, PS_TYPE_DOUBLE);
-    psVector *outVector = (psVector*)psVectorAlloc(3, PS_TYPE_DOUBLE);
-    psVector *inVector = (psVector*)psVectorAlloc(3, PS_TYPE_DOUBLE);
-
-    inVector->vec.d[0] =  6.0;
-    inVector->vec.d[1] = -4.0;
-    inVector->vec.d[2] =  7.0;
-    inVector->n = 3;
-
-    psMatrixLUD(luImage, perm, g);
-
-    for(i=0; i<3; i++)
-        for(j=0; j<3; j++) {
-            printf("luImage %f\n", luImage->data.F64[i][j]);
-        }
-
-    psMatrixLUSolve(outVector, luImage, inVector, perm);
-
-    for(j=0; j<3; j++)
-        printf("%f\n", outVector->vec.d[j]);
-
-    psImage *m = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    m->data.F64[0][0] =  1.1;
-    m->data.F64[0][1] =  1.1;
-    m->data.F64[0][2] =  1.1;
-    m->data.F64[1][0] =  1.1;
-    m->data.F64[1][1] =  1.1;
-    m->data.F64[1][2] =  1.1;
-    m->data.F64[2][0] =  1.1;
-    m->data.F64[2][1] =  1.1;
-    m->data.F64[2][2] =  1.1;
-
-    psImage *n = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    n->data.F64[0][0] =  1.1;
-    n->data.F64[0][1] =  1.1;
-    n->data.F64[0][2] =  1.1;
-    n->data.F64[1][0] =  1.1;
-    n->data.F64[1][1] =  1.1;
-    n->data.F64[1][2] =  1.1;
-    n->data.F64[2][0] =  1.1;
-    n->data.F64[2][1] =  1.1;
-    n->data.F64[2][2] =  1.1;
-
-    psImage *p = (psImage*)psImageAlloc(3, 3, PS_TYPE_DOUBLE);
-    psMatrixOp(p, m, '*', n);
-
-    for(i=0; i<3; i++)
-        for(j=0; j<3; j++) {
-            printf("luImage %f\n", p->data.F64[i][j]);
-        }
+    // Test B - Transpose input image into output image
+    printPositiveTestHeader(stdout, "psMatrix", "Transpose input image into output image");
+    psMatrixTranspose(outImage, inImage);
+    PRINT_MATRIX(outImage);
+    printFooter(stdout, "psMatrix", "Transpose input image into output image", true);
 
 
-
-    psVector *v = (psVector*)psVectorAlloc(PS_TYPE_DOUBLE, 3);
-    psImage *m2 = (psImage*)psImageAlloc(1, 3, PS_TYPE_DOUBLE);
-    m2->data.F64[0][0] = 0.0;
-    m2->data.F64[1][0] = 1.0;
-    m2->data.F64[2][0] = 2.0;
-
-    v = psMatrixToVector(v, m2);
-
-    for(j=0; j<3; j++)
-        printf("v %f\n", v->vec.d[j]);
-
-    psImage *m3 = (psImage*)psImageAlloc(1, 3, PS_TYPE_DOUBLE);
-    psVector *v3 = (psVector*)psVectorAlloc(PS_TYPE_DOUBLE, 3);
-    v3->vec.d[0] = 0.0;
-    v3->vec.d[1] = 1.0;
-    v3->vec.d[2] = 2.0;
-    m3 = psVectorToMatrix(m3, v3);
-    for(j=0; j<3; j++)
-        printf("m3 %f\n", m3->data.F64[j][0]);
+    // Test C -  Transpose input image into auto allocated NULL output image
+    printPositiveTestHeader(stdout, "psMatrix", "ranspose input image into auto allocated NULL output image");
+    psImage *outImageNull = NULL;
+    outImageNull = psMatrixTranspose(outImageNull, inImage);
+    PRINT_MATRIX(outImageNull);
+    printFooter(stdout, "psMatrix", "ranspose input image into auto allocated NULL output image", true);
 
 
-    psImage *inData = (psImage*)psImageAlloc(2, 2, PS_TYPE_DOUBLE);
+    // Test D - Free images and check for leaks
+    printPositiveTestHeader(stdout, "psMatrix", "Free images and check for leaks");
+    psImageFree(inImage);
+    psImageFree(outImage);
+    psImageFree(outImageNull);
+    psMemCheckLeaks(0, NULL, stdout);
+    int nBad = psMemCheckCorruption(0);
+    if(nBad) {
+        printf("ERROR: Found %d bad memory blocks\n", nBad);
+    }
+    printFooter(stdout, "psMatrix" ,"Free images and check for leaks", true);
 
-    inData ->data.F64[0][0] =  0.0;
-    inData ->data.F64[0][1] =  4.0;
-    inData ->data.F64[1][0] =  4.0;
-    inData ->data.F64[1][1] =  4.1;
-
-    psImage *outData = (psImage*)psImageAlloc(2, 2, PS_TYPE_DOUBLE);
-
-
-    psMatrixEigenvectors(outData, inData);
-    for(j=0; j<2; j++)
-        printf("outData %f\n", m3->data.F64[j][0]);
-
+    return 0;
 }
