Index: trunk/psLib/test/math/tap_psMinimizePowell.c
===================================================================
--- trunk/psLib/test/math/tap_psMinimizePowell.c	(revision 13123)
+++ trunk/psLib/test/math/tap_psMinimizePowell.c	(revision 13124)
@@ -9,4 +9,5 @@
     XXX: Also, the test currently fails because of memory corruption in
          psMinimizePowell().
+    XXX: The unallowed input parameter tests could be more extensive
  *****************************************************************************/
 #include <stdio.h>
@@ -74,10 +75,8 @@
 {
     psLogSetFormat("HLNM");
-    plan_tests(1);
+    plan_tests(8);
 
     // Check for various errors on unallowed input parameters
     {
-        psMemId id = psMemGetId();
-
         psVector *myParams = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32);
         psVector *myParamMask = psVectorAlloc(NUM_PARAMS, PS_TYPE_U8);
@@ -85,43 +84,38 @@
         psArray *myCoords = psArrayAlloc(N);
 
-        for (psS32 i=0;i<N;i++)
+        // Following should generate error for NULL minimize
         {
-            myCoords->data[i] = (psPtr *) psVectorAlloc(2, PS_TYPE_F32);
-            ((psVector *) (myCoords->data[i]))->data.F32[0] = (float) (i+10);
-            ((psVector *) (myCoords->data[i]))->data.F32[1] = (float) (i+3);
-            ((psVector *) (myCoords->data[i]))->n++;
-        }
-        for (psS32 i=0;i<NUM_PARAMS;i++)
-        {
-            expectedParm[i] = 2.32 + (float) (2 * i);
-            myParams->data.F32[i] = 0.0;
-            myParams->data.F32[i] = (float) i;
-            myParamMask->data.U8[i] = 0;
-            myParams->n++;
-            myParamMask->n++;
+            psMemId id = psMemGetId();
+            bool tmpBool = psMinimizePowell(NULL, myParams, myParamMask, myCoords,
+                                           (psMinimizePowellFunc) myFunc);
+            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL psMinimize param");
+            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
         }
 
-        // Following should generate error for null minimize
-        if (0)
+
+        // Following should generate error for NULL parameter vector
         {
-            psMinimizePowell(NULL, myParams, myParamMask, myCoords, (psMinimizePowellFunc) myFunc);
+            psMemId id = psMemGetId();
+            bool tmpBool = psMinimizePowell(min, NULL, myParamMask, myCoords,(psMinimizePowellFunc) myFunc);
+            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL parameter param");
+            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
         }
 
-        // Following should generate error for null parameter vector
-        if (0)
+
+        // Following should generate error for NULL coords
         {
-            psMinimizePowell(min, NULL, myParamMask, myCoords,(psMinimizePowellFunc) myFunc);
+            psMemId id = psMemGetId();
+            bool tmpBool = psMinimizePowell(min, myParams, myParamMask, NULL, (psMinimizePowellFunc) myFunc);
+            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL coords param");
+            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
         }
 
-        // Following should generate error for null coords
-        if (0)
+
+        // Following should generate error for NULL function
         {
-            psMinimizePowell(min, myParams, myParamMask, NULL, (psMinimizePowellFunc) myFunc);
-        }
-
-        // Following should generate error for null function
-        if (0)
-        {
-            psMinimizePowell(min, myParams, myParamMask, myCoords, NULL);
+            psMemId id = psMemGetId();
+            bool tmpBool = psMinimizePowell(min, myParams, myParamMask, myCoords, NULL);
+            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL function param");
+            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
         }
 
@@ -130,8 +124,13 @@
         psFree(min);
         psFree(myCoords);
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
     }
 
+
     // Powell minimize with parameter mask
+    // XXX: This function aborts with a memory corruption error at around line
+    // 60 of psMinimizePowell.c, at the psFree(v):
+    //    if (fabs(baseFuncVal - currFuncVal) <= min->tol) {
+    //        psFree(v);
+    //        psFree(pQP);
     if (0) {
         psMemId id = psMemGetId();
@@ -155,5 +154,5 @@
         }
 
-        bool tmpBool = psMinimizePowell(min, myParams, myParamMask, myCoords,
+        bool tmpBool = psMinimizePowell(min, myParams, NULL, myCoords,
                                         (psMinimizePowellFunc) myFunc);
         ok(tmpBool, "psMinimizePowell() returned sucessfully");
@@ -184,53 +183,4 @@
     }
 
-    // Powell minimize with parameter mask
-    // The only difference from the previous block is that paramMask is now NULL
-    if (0) {
-        psMemId id = psMemGetId();
-        psVector *myParams = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32);
-        psMinimization *min = psMinimizationAlloc(100, 0.01);
-        psArray *myCoords = psArrayAlloc(N);
-        bool tmpBool;
-
-        myCoords->n = N;
-        for (psS32 i=0;i<N;i++)
-        {
-            myCoords->data[i] = (psPtr *) psVectorAlloc(2, PS_TYPE_F32);
-            ((psVector *) (myCoords->data[i]))->data.F32[0] = (float) (i+10);
-            ((psVector *) (myCoords->data[i]))->data.F32[1] = (float) (i+3);
-        }
-        for (psS32 i=0;i<NUM_PARAMS;i++)
-        {
-            expectedParm[i] = 2.32 + (float) (2 * i);
-            myParams->data.F32[i] = 0.0;
-            myParams->data.F32[i] = (float) i;
-            myParams->n++;
-        }
-
-        tmpBool = psMinimizePowell(min, myParams, NULL, myCoords,
-                                   (psMinimizePowellFunc) myFunc);
-        ok(tmpBool, "psMinimizePowell() returned sucessfully");
-        skip_start(!tmpBool, 0, "Skipping tests because psMinimizePowell() failed");
-
-        printf("\nThe minimum is %f (expected: %f)\n", min->value, MIN_VALUE);
-        for (psS32 i=0;i<NUM_PARAMS;i++)
-        {
-            printf("Parameter %d at the minimum is %.1f (expected: %.1f)\n", i,
-                   myParams->data.F32[i], expectedParm[i]);
-
-            if (fabs(myParams->data.F32[i] - expectedParm[i]) > fabs(ERROR_TOLERANCE * expectedParm[i])) {
-                printf("ERROR: Parameter %d: (%.1f), expected was (%.1f)\n",
-                       i, myParams->data.F32[i], expectedParm[i]);
-                testStatus = false;
-            } else {
-                printf("Parameter %d: (%.1f), expected was (%.1f)\n",
-                       i, myParams->data.F32[i], expectedParm[i]);
-            }
-        }
-        psFree(myCoords);
-        psFree(myParams);
-        psFree(min);
-        skip_end();
-        ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
-    }
+    // XXX: Add tests with active parameter mask
 }
