IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 1, 2007, 6:20:06 PM (19 years ago)
Author:
gusciora
Message:

Added tabular file of all psLib functions in Chapter 6 of the SDRS (Data
Manipulation). Most of the test file changes in this check-in are fairly
cosmetic.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/test/math/tap_psMinimizePowell.c

    r13123 r13124  
    99    XXX: Also, the test currently fails because of memory corruption in
    1010         psMinimizePowell().
     11    XXX: The unallowed input parameter tests could be more extensive
    1112 *****************************************************************************/
    1213#include <stdio.h>
     
    7475{
    7576    psLogSetFormat("HLNM");
    76     plan_tests(1);
     77    plan_tests(8);
    7778
    7879    // Check for various errors on unallowed input parameters
    7980    {
    80         psMemId id = psMemGetId();
    81 
    8281        psVector *myParams = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32);
    8382        psVector *myParamMask = psVectorAlloc(NUM_PARAMS, PS_TYPE_U8);
     
    8584        psArray *myCoords = psArrayAlloc(N);
    8685
    87         for (psS32 i=0;i<N;i++)
     86        // Following should generate error for NULL minimize
    8887        {
    89             myCoords->data[i] = (psPtr *) psVectorAlloc(2, PS_TYPE_F32);
    90             ((psVector *) (myCoords->data[i]))->data.F32[0] = (float) (i+10);
    91             ((psVector *) (myCoords->data[i]))->data.F32[1] = (float) (i+3);
    92             ((psVector *) (myCoords->data[i]))->n++;
    93         }
    94         for (psS32 i=0;i<NUM_PARAMS;i++)
    95         {
    96             expectedParm[i] = 2.32 + (float) (2 * i);
    97             myParams->data.F32[i] = 0.0;
    98             myParams->data.F32[i] = (float) i;
    99             myParamMask->data.U8[i] = 0;
    100             myParams->n++;
    101             myParamMask->n++;
     88            psMemId id = psMemGetId();
     89            bool tmpBool = psMinimizePowell(NULL, myParams, myParamMask, myCoords,
     90                                           (psMinimizePowellFunc) myFunc);
     91            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL psMinimize param");
     92            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
    10293        }
    10394
    104         // Following should generate error for null minimize
    105         if (0)
     95
     96        // Following should generate error for NULL parameter vector
    10697        {
    107             psMinimizePowell(NULL, myParams, myParamMask, myCoords, (psMinimizePowellFunc) myFunc);
     98            psMemId id = psMemGetId();
     99            bool tmpBool = psMinimizePowell(min, NULL, myParamMask, myCoords,(psMinimizePowellFunc) myFunc);
     100            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL parameter param");
     101            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
    108102        }
    109103
    110         // Following should generate error for null parameter vector
    111         if (0)
     104
     105        // Following should generate error for NULL coords
    112106        {
    113             psMinimizePowell(min, NULL, myParamMask, myCoords,(psMinimizePowellFunc) myFunc);
     107            psMemId id = psMemGetId();
     108            bool tmpBool = psMinimizePowell(min, myParams, myParamMask, NULL, (psMinimizePowellFunc) myFunc);
     109            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL coords param");
     110            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
    114111        }
    115112
    116         // Following should generate error for null coords
    117         if (0)
     113
     114        // Following should generate error for NULL function
    118115        {
    119             psMinimizePowell(min, myParams, myParamMask, NULL, (psMinimizePowellFunc) myFunc);
    120         }
    121 
    122         // Following should generate error for null function
    123         if (0)
    124         {
    125             psMinimizePowell(min, myParams, myParamMask, myCoords, NULL);
     116            psMemId id = psMemGetId();
     117            bool tmpBool = psMinimizePowell(min, myParams, myParamMask, myCoords, NULL);
     118            ok(!tmpBool, "psMinimizePowell() returned FALSE with NULL function param");
     119            ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
    126120        }
    127121
     
    130124        psFree(min);
    131125        psFree(myCoords);
    132         ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
    133126    }
    134127
     128
    135129    // Powell minimize with parameter mask
     130    // XXX: This function aborts with a memory corruption error at around line
     131    // 60 of psMinimizePowell.c, at the psFree(v):
     132    //    if (fabs(baseFuncVal - currFuncVal) <= min->tol) {
     133    //        psFree(v);
     134    //        psFree(pQP);
    136135    if (0) {
    137136        psMemId id = psMemGetId();
     
    155154        }
    156155
    157         bool tmpBool = psMinimizePowell(min, myParams, myParamMask, myCoords,
     156        bool tmpBool = psMinimizePowell(min, myParams, NULL, myCoords,
    158157                                        (psMinimizePowellFunc) myFunc);
    159158        ok(tmpBool, "psMinimizePowell() returned sucessfully");
     
    184183    }
    185184
    186     // Powell minimize with parameter mask
    187     // The only difference from the previous block is that paramMask is now NULL
    188     if (0) {
    189         psMemId id = psMemGetId();
    190         psVector *myParams = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32);
    191         psMinimization *min = psMinimizationAlloc(100, 0.01);
    192         psArray *myCoords = psArrayAlloc(N);
    193         bool tmpBool;
    194 
    195         myCoords->n = N;
    196         for (psS32 i=0;i<N;i++)
    197         {
    198             myCoords->data[i] = (psPtr *) psVectorAlloc(2, PS_TYPE_F32);
    199             ((psVector *) (myCoords->data[i]))->data.F32[0] = (float) (i+10);
    200             ((psVector *) (myCoords->data[i]))->data.F32[1] = (float) (i+3);
    201         }
    202         for (psS32 i=0;i<NUM_PARAMS;i++)
    203         {
    204             expectedParm[i] = 2.32 + (float) (2 * i);
    205             myParams->data.F32[i] = 0.0;
    206             myParams->data.F32[i] = (float) i;
    207             myParams->n++;
    208         }
    209 
    210         tmpBool = psMinimizePowell(min, myParams, NULL, myCoords,
    211                                    (psMinimizePowellFunc) myFunc);
    212         ok(tmpBool, "psMinimizePowell() returned sucessfully");
    213         skip_start(!tmpBool, 0, "Skipping tests because psMinimizePowell() failed");
    214 
    215         printf("\nThe minimum is %f (expected: %f)\n", min->value, MIN_VALUE);
    216         for (psS32 i=0;i<NUM_PARAMS;i++)
    217         {
    218             printf("Parameter %d at the minimum is %.1f (expected: %.1f)\n", i,
    219                    myParams->data.F32[i], expectedParm[i]);
    220 
    221             if (fabs(myParams->data.F32[i] - expectedParm[i]) > fabs(ERROR_TOLERANCE * expectedParm[i])) {
    222                 printf("ERROR: Parameter %d: (%.1f), expected was (%.1f)\n",
    223                        i, myParams->data.F32[i], expectedParm[i]);
    224                 testStatus = false;
    225             } else {
    226                 printf("Parameter %d: (%.1f), expected was (%.1f)\n",
    227                        i, myParams->data.F32[i], expectedParm[i]);
    228             }
    229         }
    230         psFree(myCoords);
    231         psFree(myParams);
    232         psFree(min);
    233         skip_end();
    234         ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");
    235     }
     185    // XXX: Add tests with active parameter mask
    236186}
Note: See TracChangeset for help on using the changeset viewer.