Index: /trunk/psLib/test/dataManip/tst_psMatrix07.c
===================================================================
--- /trunk/psLib/test/dataManip/tst_psMatrix07.c	(revision 2694)
+++ /trunk/psLib/test/dataManip/tst_psMatrix07.c	(revision 2695)
@@ -16,6 +16,6 @@
  *  @author  Ross Harman, MHPCC
  *
- *  @version $Revision: 1.7 $  $Name: not supported by cvs2svn $
- *  @date  $Date: 2004-11-22 21:00:21 $
+ *  @version $Revision: 1.8 $  $Name: not supported by cvs2svn $
+ *  @date  $Date: 2004-12-10 22:55:17 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -26,20 +26,41 @@
 #include "psTest.h"
 
-#define PRINT_MATRIX(IMAGE)                         \
-for(psS32 i=0; i<IMAGE->numRows; i++) {               \
-    for(psS32 j=0; j<IMAGE->numCols; j++) {           \
-        printf("%f ", IMAGE->data.F64[i][j]);       \
-    }                                               \
-    printf("\n");                                   \
+
+#define TOLERANCE 0.000001
+
+#define CHECK_MATRIX(IMAGE,TRUTH)                                                                        \
+for(psU32 i=0; i<IMAGE->numRows; i++) {                                                                  \
+    for(psU32 j=0; j<IMAGE->numCols; j++) {                                                              \
+        if(IMAGE->type.type == PS_TYPE_F64) {                                                            \
+            if(fabs(IMAGE->data.F64[i][j]-TRUTH[i][j]) > TOLERANCE) {                                    \
+                printf("Matrix values at element %d, %d don't agree %lf vs %lf\n", i, j,                 \
+                       IMAGE->data.F64[i][j], TRUTH[i][j]);                                              \
+            }                                                                                            \
+        } else if(IMAGE->type.type == PS_TYPE_F32){                                                      \
+            if(fabs(IMAGE->data.F32[i][j]-TRUTH[i][j]) > TOLERANCE) {                                    \
+                printf("Matrix values at element %d, %d don't agree %f vs %lf\n", i, j,                  \
+                       IMAGE->data.F32[i][j], TRUTH[i][j]);                                              \
+            }                                                                                            \
+        }                                                                                                \
+    }                                                                                                    \
 }
 
-#define PRINT_VECTOR(VECTOR)                        \
-for(psS32 i=0; i<VECTOR->n; i++) {                    \
-    printf("%f\n", VECTOR->data.F64[i]);            \
+#define CHECK_VECTOR(VECTOR)                                                                                 \
+for(psU32 i=0; i<VECTOR->n; i++) {                                                                       \
+    if(VECTOR->type.type == PS_TYPE_F64) {                                                               \
+        if(fabs(VECTOR->data.F64[i]-truthVector[i]) > TOLERANCE) {                                       \
+            printf("Vector values at element %d don't agree %lf vs %lf\n", i,                            \
+                   VECTOR->data.F64[i], truthVector[i]);                                                 \
+        }                                                                                                \
+    } else if(VECTOR->type.type == PS_TYPE_F32){                                                         \
+        if(fabs(VECTOR->data.F32[i]-truthVector[i]) > TOLERANCE) {                                       \
+            printf("Vector values at element %d don't agree %f vs %lf\n", i,                             \
+                   VECTOR->data.F32[i], truthVector[i]);                                                 \
+        }                                                                                                \
+    }                                                                                                    \
 }
 
 
-psS32 main(psS32 argc,
-           char* argv[])
+psS32 main(psS32 argc, char* argv[])
 {
     psVector *v1 = NULL;
@@ -48,4 +69,5 @@
     psImage *m1 = NULL;
     psVector *v2 = NULL;
+    psVector *v3 = NULL;
     psImage *m2 = NULL;
     psImage *m3 = NULL;
@@ -53,4 +75,6 @@
     psImage *badImage = NULL;
 
+    double truthVector[3] = {0.0, 1.0, 2.0};
+    double truthMatrix[3][1] = {{0.0}, {1.0}, {2.0}};
 
     // Test A - Create input and output images
@@ -73,9 +97,4 @@
     m4->data.F64[0][1] = 1.0;
     m4->data.F64[0][2] = 2.0;
-    PRINT_MATRIX(m1);
-    printf("\n");
-    PRINT_MATRIX(m4);
-    printf("\n");
-    PRINT_VECTOR(v2);
     printFooter(stdout, "psMatrix", "Create input and output images and vectors", true);
 
@@ -85,11 +104,10 @@
     tempVector = v1;
     v1 = psMatrixToVector(v1, m1);
-    PRINT_VECTOR(v1);
+    CHECK_VECTOR(v1);
     if(v1->type.dimen != PS_DIMEN_VECTOR) {
         printf("Error: Resulting image is not PS_DIMEN_VECTOR\n");
-    } else
-        if(v1 != tempVector) {
-            printf("Error: Return pointer not equal to output argument pointer\n");
-        }
+    } else if(v1 != tempVector) {
+        printf("Error: Return pointer not equal to output argument pointer\n");
+    }
     printFooter(stdout, "psMatrix", "Convert matrix to PS_DIMEN_VECTOR vector", true);
 
@@ -104,13 +122,13 @@
     // Test D - Convert matrix to PS_DIMEN_TRANSV vector
     printPositiveTestHeader(stdout, "psMatrix", "Convert matrix to PS_DIMEN_TRANSV vector");
-    v1->type.dimen = PS_DIMEN_TRANSV;
-    psMatrixToVector(v1, m4);
-    PRINT_VECTOR(v1);
-    if(v1->type.dimen != PS_DIMEN_TRANSV) {
+    v3 = psVectorAlloc(3, PS_TYPE_F64);
+    v3->type.dimen = PS_DIMEN_TRANSV;
+    psMatrixToVector(v3, m4);
+    CHECK_VECTOR(v3);
+    if(v3->type.dimen != PS_DIMEN_TRANSV) {
         printf("Error: Resulting image is not PS_DIMEN_TRANSV\n");
-    } else
-        if(v1 != tempVector) {
-            printf("Error: Return pointer not equal to output argument pointer\n");
-        }
+    } else if(v3 != tempVector) {
+        printf("Error: Return pointer not equal to output argument pointer\n");
+    }
     printFooter(stdout, "psMatrix", "Convert matrix to PS_DIMEN_TRANSV vector", true);
 
@@ -127,11 +145,10 @@
     tempImage = m2;
     m2 = psVectorToMatrix(m2, v2);
-    PRINT_MATRIX(m2);
+    CHECK_MATRIX(m2,truthMatrix);
     if(m2->type.dimen != PS_DIMEN_IMAGE) {
         printf("Error: Resulting image is not PS_DIMEN_IMAGE\n");
-    } else
-        if(m2 != tempImage) {
-            printf("Error: Return pointer not equal to output argument pointer\n");
-        }
+    } else if(m2 != tempImage) {
+        printf("Error: Return pointer not equal to output argument pointer\n");
+    }
     printFooter(stdout, "psMatrix", "Convert PS_DIMEN_VECTOR vector to matrix", true);
 
@@ -149,11 +166,10 @@
     tempImage = m3;
     psVectorToMatrix(m3, v2);
-    PRINT_MATRIX(m3);
+    CHECK_MATRIX(m3, truthMatrix);
     if(m3->type.dimen != PS_DIMEN_IMAGE) {
         printf("Error: Resulting image is not PS_DIMEN_IMAGE\n");
-    } else
-        if(m3 != tempImage) {
-            printf("Error: Return pointer not equal to output argument pointer\n");
-        }
+    } else if(m3 != tempImage) {
+        printf("Error: Return pointer not equal to output argument pointer\n");
+    }
     printFooter(stdout, "psMatrix", "Convert PS_DIMEN_TRANSV vector to matrix", true);
 
@@ -165,4 +181,5 @@
     psFree(m2);
     psFree(v2);
+    psFree(v3);
     psFree(m3);
     psFree(m4);
