Index: trunk/psLib/test/dataManip/tst_psStats00.c
===================================================================
--- trunk/psLib/test/dataManip/tst_psStats00.c	(revision 717)
+++ trunk/psLib/test/dataManip/tst_psStats00.c	(revision 887)
@@ -11,67 +11,115 @@
 {
     psStats *myStats    = NULL;
-    psStats *myStats2   = NULL;
     int testStatus      = true;
+    int globalTestStatus = true;
     int i               = 0;
     psVector *myVector  = NULL;
     psVector *maskVector= NULL;
     float mean          = 0.0;
-    float realMean1     = 0.0;
-    float realMean2     = 0.0;
+    float realMeanNoMask   = 0.0;
+    float realMeanWithMask = 0.0;
     int count           = 0;
+    int currentId       = psMemGetId();
+    int memLeaks        = 0;
 
-    printPositiveTestHeader(stdout,
-                            "psStats functions",
-                            "PS_STAT_SAMPLE_MEAN");
-
+    /*************************************************************************/
+    /*  Allocate and initialize data structures                      */
+    /*************************************************************************/
     myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
-    myVector = psVectorAlloc(PS_TYPE_FLOAT, N);
+    myVector = psVectorAlloc(N, PS_TYPE_F32);
     myVector->n = N;
-    maskVector = psVectorAlloc(PS_TYPE_UINT8, N);
+    maskVector = psVectorAlloc(N, PS_TYPE_U8);
     maskVector->n = N;
 
     mean = 0.0;
-    realMean2 = 0.0;
+    realMeanWithMask = 0.0;
+    // Set the appropriate values for the vector data.
     for (i=0;i<N;i++) {
-        myVector->vec.f[i] = (float) i;
+        myVector->data.F32[i] = (float) i;
+    }
+
+    // Set the mask vector and calculate the expected maximum.
+    for (i=0;i<N;i++) {
+        realMeanNoMask+= myVector->data.F32[i];
+
         if (i < (N/2)) {
-            maskVector->vec.ui8[i] = 0;
-            realMean2+= myVector->vec.f[i];
+            maskVector->data.U8[i] = 0;
+            realMeanWithMask+= myVector->data.F32[i];
             count++;
         } else {
-            printf("Masking element %d\n", i);
-            maskVector->vec.ui8[i] = 1;
+            maskVector->data.U8[i] = 1;
         }
-        realMean1+= myVector->vec.f[i];
     }
-    realMean1 /= (float) N;
-    realMean2 /= (float) count;
+    realMeanNoMask /= (float) N;
+    realMeanWithMask /= (float) count;
 
-    myStats2 = psArrayStats(myVector, NULL, 0, myStats);
-    mean = myStats2->sampleMean;
+    /*************************************************************************/
+    /*  Call psVectorStats() with no vector mask.                    */
+    /*************************************************************************/
+    printPositiveTestHeader(stdout,
+                            "psStats functions",
+                            "PS_STAT_SAMPLE_MEAN: no vector mask");
 
-    printf("Called psArrayStats() on a vector with no elements masked.\n");
-    printf("The expected mean was %f; the calculated mean was %f\n", realMean1, mean);
-    if (mean == realMean1) {
+    myStats = psVectorStats(myStats, myVector, NULL, 0);
+    mean = myStats->sampleMean;
+
+    printf("Called psVectorStats() on a vector with no elements masked.\n");
+    printf("The expected mean was %f; the calculated mean was %f\n", realMeanNoMask, mean);
+    if (mean == realMeanNoMask) {
         testStatus = true;
     } else {
         testStatus = false;
+        globalTestStatus = false;
     }
+    printFooter(stdout,
+                "psVector functions",
+                "PS_STAT_SAMPLE_MEAN: no vector mask",
+                testStatus);
 
-    myStats2 = psArrayStats(myVector, maskVector, 1, myStats);
-    mean = myStats2->sampleMean;
-    printf("Called psArrayStats() on a vector with last N/2 elements masked.\n");
-    printf("The expected mean was %f; the calculated mean was %f\n", realMean2, mean);
-    if (mean == realMean2) {
+    /*************************************************************************/
+    /*  Call psVectorStats() with vector mask.                       */
+    /*************************************************************************/
+    printPositiveTestHeader(stdout,
+                            "psStats functions",
+                            "PS_STAT_SAMPLE_MEAN: with vector mask");
+
+    myStats = psVectorStats(myStats, myVector, maskVector, 1);
+    mean = myStats->sampleMean;
+    printf("Called psVectorStats() on a vector with last N/2 elements masked.\n");
+    printf("The expected mean was %f; the calculated mean was %f\n", realMeanWithMask, mean);
+    if (mean == realMeanWithMask) {
         testStatus = true;
     } else {
         testStatus = false;
+        globalTestStatus = false;
     }
 
     printFooter(stdout,
-                "psHash functions",
-                "psHashAlloc()",
+                "psVector functions",
+                "PS_STAT_SAMPLE_MEAN: with vector mask",
                 testStatus);
 
-    return (!testStatus);
+    /*************************************************************************/
+    /*  Deallocate data structures                                   */
+    /*************************************************************************/
+    printPositiveTestHeader(stdout,
+                            "psStats functions",
+                            "psStats(): deallocating memory");
+
+    psStatsFree(myStats);
+    psVectorFree(myVector);
+    psVectorFree(maskVector);
+
+    psMemCheckCorruption(1);
+    memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
+    if (0 != memLeaks) {
+        psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);
+    }
+
+    printFooter(stdout,
+                "psVector functions",
+                "psStats(): deallocating memory",
+                testStatus);
+
+    return (!globalTestStatus);
 }
