Index: trunk/psLib/test/dataManip/tst_psStats03.c
===================================================================
--- trunk/psLib/test/dataManip/tst_psStats03.c	(revision 779)
+++ trunk/psLib/test/dataManip/tst_psStats03.c	(revision 887)
@@ -1,10 +1,10 @@
 /*****************************************************************************
     This routine must ensure that PS_STAT_SAMPLE_MEDIAN is correctly computed
-    by the procedure psArrayStats().
+    by the procedure psVectorStats().
  *****************************************************************************/
 #include <stdio.h>
 #include "pslib.h"
 #include "psTest.h"
-#define N1 1029
+#define N1 1029   // This should be an odd number.
 #define N ((4 * N1) + 1)
 
@@ -12,66 +12,109 @@
 {
     psStats *myStats    = NULL;
-    psStats *myStats2   = NULL;
     int testStatus      = true;
+    int globalTestStatus = true;
     int i               = 0;
     psVector *myVector  = NULL;
     psVector *maskVector= NULL;
     float median        = 1e99;
-    float realMedian1   = 1e99;
-    float realMedian2   = 1e99;
+    float realMedianWithMask = (float) (N-3)/4;
+    float realMedianNoMask = (float) (N-1)/2;
+    int currentId       = psMemGetId();
+    int memLeaks        = 0;
 
-    printPositiveTestHeader(stdout,
-                            "psStats functions",
-                            "PS_STAT_SAMPLE_MEDIAN");
-
+    /*************************************************************************/
+    /*  Allocate and initialize data structures                      */
+    /*************************************************************************/
     myStats = psStatsAlloc(PS_STAT_SAMPLE_MEDIAN);
-    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;
 
+    // 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 median.
+    for (i=0;i<N;i++) {
         if (i < (N/2)) {
-            maskVector->vec.ui8[i] = 0;
-            if (myVector->vec.f[i] < realMedian2) {
-                realMedian2 = myVector->vec.f[i];
-            }
+            maskVector->data.U8[i] = 0;
         } else {
-            maskVector->vec.ui8[i] = 1;
-            if (myVector->vec.f[i] < realMedian1) {
-                realMedian1 = myVector->vec.f[i];
-            }
+            maskVector->data.U8[i] = 1;
         }
     }
 
-    myStats2 = psArrayStats(myVector, NULL, 0, myStats);
-    median = myStats2->sampleMedian;
+    /*************************************************************************/
+    /*  Call psVectorStats() with no vector mask.                    */
+    /*************************************************************************/
+    printPositiveTestHeader(stdout,
+                            "psStats functions",
+                            "PS_STAT_SAMPLE_MEDIAN: no vector mask");
 
-    printf("Called psArrayStats() on a vector with no elements masked.\n");
+    myStats = psVectorStats(myStats, myVector, NULL, 0);
+    median = myStats->sampleMedian;
+
+    printf("Called psVectorStats() on a vector with no elements masked.\n");
     printf("The expected median was %f.  The calculated median was %f.\n",
-           (float) (N-1)/2, median);
-    if (median == (float) (N-1)/2) {
+           realMedianNoMask, median);
+    if (median == realMedianNoMask) {
         testStatus = true;
     } else {
         testStatus = false;
+        globalTestStatus = false;
     }
 
-    myStats2 = psArrayStats(myVector, maskVector, 1, myStats);
-    median = myStats2->sampleMedian;
-    printf("Called psArrayStats() on a vector with last N/2 elements masked.\n");
+    printFooter(stdout,
+                "psStats functions",
+                "PS_STAT_SAMPLE_MEDIAN: no vector mask",
+                testStatus);
+
+    /*************************************************************************/
+    /*  Call psVectorStats() with vector mask.                       */
+    /*************************************************************************/
+    printPositiveTestHeader(stdout,
+                            "psStats functions",
+                            "PS_STAT_SAMPLE_MEDIAN: with vector mask");
+
+    myStats = psVectorStats(myStats, myVector, maskVector, 1);
+    median = myStats->sampleMedian;
+    printf("Called psVectorStats() on a vector with last N/2 elements masked.\n");
     printf("The expected median was %f.  The calculated median was %f.\n",
-           (float) (N-3)/4, median);
-    if (median == (float) (N-3)/4) {
+           realMedianWithMask, median);
+    if (median == realMedianWithMask) {
         testStatus = true;
     } else {
         testStatus = false;
+        globalTestStatus = false;
     }
 
     printFooter(stdout,
-                "psHash functions",
-                "psHashAlloc()",
+                "psStats functions",
+                "PS_STAT_SAMPLE_MEDIAN: 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,
+                "psStats functions",
+                "psStats(): deallocating memory",
+                testStatus);
+
+    return (!globalTestStatus);
 }
