IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9597


Ignore:
Timestamp:
Oct 16, 2006, 4:35:25 PM (20 years ago)
Author:
drobbin
Message:

Added null check to PS_ASSERT_PTR in psAssert.h
edited formatting of output of psArrayRemoveData tests
Edited PolynomialXDto/fromMetadata to reflect recent changes to mask handling and added 1D cases.

Location:
trunk/psLib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/sys/psAssert.h

    r9538 r9597  
    1313#define PS_ASSERT_PTR(NAME, RVAL) \
    1414{ \
     15    if (NAME == NULL) return(RVAL); \
    1516    psMemBlock *mb = (psMemBlock*)(NAME) - 1; \
    1617    if (mb->startblock != P_PS_MEMMAGIC || mb->endblock != P_PS_MEMMAGIC || \
  • trunk/psLib/test/types/tap_psArray_all.c

    r9582 r9597  
    155155        psArray *temp = NULL;
    156156        ok( !psArrayRemoveData(temp, s2),
    157             "psArrayRemoveData:         return false for NULL input psArray.");
     157            "psArrayRemoveData:     return false for NULL input psArray.");
    158158    }
    159159    //Return true for successful removal
    160160    {
    161161        ok( psArrayRemoveData(a, s2) && a->n == 2,
    162             "psArrayRemoveData:         return true for successful removal.");
     162            "psArrayRemoveData:     return true for successful removal.");
    163163    }
    164164
  • trunk/psLib/test/types/tap_psMetadata_polynomials.c

    r9582 r9597  
    1717#include "pstap.h"
    1818
     19void test1Dcase(void);
    1920void test2Dcase(void);
    2021void test3Dcase(void);
     
    2324int main(void)
    2425{
    25     plan_tests(58);
    26 
    27     diag("psPolynomial(2D, 3D, & 4D)(to/from)MD tests");
    28 
     26    plan_tests(89);
     27
     28    diag("psPolynomial(1D, 2D, 3D, & 4D)(to/from)Metadata tests");
     29
     30    test1Dcase();
    2931    test2Dcase();
    3032    test3Dcase();
     
    3436}
    3537
     38
     39void test1Dcase(void)
     40{
     41    diag("  >>>Test 1:  psPolynomial1DtoMetadata & psPolynomial1DfromMetadata functions");
     42    psMetadata *md = psMetadataAlloc();
     43    psPolynomial1D *p1d = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 1);
     44    p1d->coeff[0] = 1.1;
     45    p1d->coeff[1] = 2.2;
     46    p1d->coeffErr[0] = 0.1;
     47    p1d->coeffErr[1] = 0.2;
     48
     49    //psPolynomial1DtoMetadata
     50    //Return a valid metadata containing a polynomial-metadata structure
     51    {
     52        diag ("example of 1DtoMD using the names not the sequence");
     53
     54        ok( psPolynomial1DtoMetadata(md, p1d, "polyMD"),
     55            "psPolynomial1DtoMetadata:      return true for valid inputs.");
     56        psMetadata *polyMDtemp = psMetadataLookupMetadata(NULL, md, "polyMD");
     57        skip_start( polyMDtemp == NULL , 1,
     58                    "Skipping 1 tests because psPolynomial1DtoMetadata has errors");
     59
     60        bool status;
     61        int nX = psMetadataLookupS32(&status, polyMDtemp, "NORDER_X");
     62        ok(status,
     63           "psPolynomial1DtoMetadata:      found NORDER_X");
     64        ok(nX == 1,
     65           "psPolynomial1DtoMetadata:      NORDER_X is 1");
     66
     67        double val;
     68        val = psMetadataLookupF64(&status, polyMDtemp, "VAL_X00");
     69        ok(status,
     70           "psPolynomial1DtoMetadata:      found VAL_X00");
     71        ok_double(val, 1.1,
     72                  "psPolynomial1DtoMetadata:      VAL_X00 is %lf", val);
     73
     74        val = psMetadataLookupF64(&status, polyMDtemp, "VAL_X01");
     75        ok(status,
     76           "psPolynomial1DtoMetadata:      found VAL_X01");
     77        ok_double(val, 2.2,
     78                  "psPolynomial1DtoMetadata:      VAL_X01 is %lf", val);
     79        skip_end();
     80    }
     81
     82    //Return false for no-name polynomial
     83    {
     84        ok( !psPolynomial1DtoMetadata(md, p1d, ""),
     85            "psPolynomial1DtoMetadata:      return false for no-name.");
     86    }
     87    //Return false for NULL-name polynomial
     88    {
     89        ok( !psPolynomial1DtoMetadata(md, p1d, NULL),
     90            "psPolynomial1DtoMetadata:      return false for NULL name input.");
     91    }
     92    //Return false for NULL metadata input
     93    {
     94        ok( !psPolynomial1DtoMetadata(NULL, p1d, "polyMD"),
     95            "psPolynomial1DtoMetadata:     return false for NULL metadata input.");
     96    }
     97    //Return false for NULL polynomial input
     98    {
     99        ok( !psPolynomial1DtoMetadata(md, NULL, "polyMD"),
     100            "psPolynomial1DtoMetadata:     return false for NULL polynomial input.");
     101    }
     102    //Return true for polynomial with 1 element, a constant
     103    {
     104        psPolynomial1D *constPoly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 0);
     105        constPoly->coeff[0] = 6.66;
     106        ok( psPolynomial1DtoMetadata(md, constPoly, "polyMD"),
     107            "psPolynomial1DtoMetadata:     return true for constant polynomial (1 element != 0).");
     108        psFree(constPoly);
     109    }
     110    //Return false for non-ordinary polynomial
     111    {
     112        psPolynomial1D *p1d1 = psPolynomial1DAlloc(PS_POLYNOMIAL_CHEB, 1);
     113        p1d1->coeff[0] = 1.1;
     114        ok( !psPolynomial1DtoMetadata(md, p1d1, "polyMD"),
     115            "psPolynomial1DtoMetadata:     return false for chebyshev polynomial");
     116        psFree(p1d1);
     117    }
     118
     119    //psPolynomial1DfromMetadata Tests
     120    //Return NULL for NULL metadata input.
     121    {
     122        psPolynomial1D *emptyPoly1D = NULL;
     123        emptyPoly1D = psPolynomial1DfromMetadata(NULL);
     124        ok( emptyPoly1D == NULL,
     125            "psPolynomial1DfromMetadata:   return NULL for NULL metadata input.");
     126    }
     127    //Get a polynomial from Metadata.
     128    psPolynomial1D *outPoly = NULL;
     129    psMetadata *polyMDtemp = psMetadataLookupMetadata(NULL, md, "polyMD");
     130    outPoly = psPolynomial1DfromMetadata(polyMDtemp);
     131    {
     132        skip_start( outPoly == NULL, 1,
     133                    "Skipping 1 tests because psPolynomial1DfromMetadata has errors.");
     134        ok( outPoly->type == PS_POLYNOMIAL_ORD && outPoly->nX == 1 &&
     135            abs(outPoly->coeff[0] - 1.1) < DBL_EPSILON,
     136            "psPolynomial1DfromMetadata:   return correct polynomial from metadata");
     137        skip_end();
     138    }
     139    //Get a polynomial from Metadata with mask[0] == 1.
     140    psFree(outPoly);
     141    outPoly = NULL;
     142    psPolynomial1D *maskPoly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 0);
     143    maskPoly->coeff[0] = 6.66;
     144    maskPoly->mask[0] = 1;
     145    psMetadata *newmd = psMetadataAlloc();
     146    psPolynomial1DtoMetadata(newmd, maskPoly, "polyMD");
     147    psMetadata *polyMask = psMetadataLookupMetadata(NULL, newmd, "polyMD");
     148    outPoly = psPolynomial1DfromMetadata(polyMask);
     149    {
     150        ok( outPoly->type == PS_POLYNOMIAL_ORD && outPoly->nX == 0 &&
     151            outPoly->mask[0] == 1,
     152            "psPolynomial1DfromMetadata:   return correct polynomial (w/mask) from metadata");
     153    }
     154    psFree(maskPoly);
     155    psFree(newmd);
     156    //Return NULL for wrong NELEMENTS
     157    psMetadataItem *nElementItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     158    nElementItem->data.S32 -= 1;
     159    psFree(outPoly);
     160    outPoly = NULL;
     161    outPoly = psPolynomial1DfromMetadata(polyMDtemp);
     162    {
     163        ok( outPoly == NULL,
     164            "psPolynomial1DfromMetadata:   "
     165            "return NULL for metadata-polynomial with wrong NELEMENTS");
     166    }
     167    //Return NULL for missing NELEMENTS
     168    psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL);
     169    psFree(outPoly);
     170    outPoly = NULL;
     171    outPoly = psPolynomial1DfromMetadata(polyMDtemp);
     172    {
     173        ok( outPoly == NULL,
     174            "psPolynomial1DfromMetadata:   "
     175            "return NULL for metadata-polynomial with no NELEMENTS");
     176    }
     177
     178    //Return NULL for polynomial in metadata with no x-order
     179    psMetadataRemoveKey(polyMDtemp, "NORDER_X");
     180    psFree(outPoly);
     181    outPoly = NULL;
     182    outPoly = psPolynomial1DfromMetadata(polyMDtemp);
     183    {
     184        ok( outPoly == NULL,
     185            "psPolynomial1DfromMetadata:   "
     186            "return NULL for metadata-polynomial with no x-order");
     187    }
     188
     189    //Check for Memory leaks
     190    {
     191        psFree(outPoly);
     192        psFree(p1d);
     193        psFree(md);
     194        checkMem();
     195    }
     196}
     197
    36198void test2Dcase(void)
    37199{
    38     diag("  >>>Test 1:  psPolynomial2DtoMetadata & psPolynomial2DfromMetadata functions");
     200    diag("  >>>Test 2:  psPolynomial2DtoMetadata & psPolynomial2DfromMetadata functions");
    39201    psMetadata *md = psMetadataAlloc();
    40202    psPolynomial2D *p2d = psPolynomial2DAlloc(PS_POLYNOMIAL_ORD, 1, 1);
     
    52214    {
    53215        ok( psPolynomial2DtoMetadata(md, p2d, "polyMD"),
    54             "psPolynomial2DtoMetadata:      return true for valid inputs.");
     216            "psPolynomial2DtoMetadata:     return true for valid inputs.");
    55217
    56218        psMetadataConfigWrite (md, "test.md");
    57219
    58         ok (0, "these tests are relying on the ORDER of the MD components not the NAMES");
    59         ok (0, "these seem like irrelevant tests");
     220        //XXX        ok (0, "these tests are relying on the ORDER of the MD components not the NAMES");
     221        //XXX        ok (0, "these seem like irrelevant tests");
    60222        psMetadata *polyMDtemp = psMetadataLookupMetadata(NULL, md, "polyMD");
    61223        skip_start( polyMDtemp == NULL , 1,
     
    65227                    "Skipping 2 tests because psPolynomial2DtoMetadata has errors in order elements");
    66228        ok( !strncmp(polyItem->name, "NORDER_X", 10) && polyItem->data.S32 == 1,
    67             "psPolynomial2DtoMetadata:      return correct number of x orders.");
     229            "psPolynomial2DtoMetadata:     return correct number of x orders.");
    68230        polyItem = psMetadataGet(polyMDtemp, 1);
    69231        ok( !strncmp(polyItem->name, "NORDER_Y", 10) && polyItem->data.S32 == 1,
    70             "psPolynomial2DtoMetadata:      return correct number of y orders.");
     232            "psPolynomial2DtoMetadata:     return correct number of y orders.");
    71233        skip_end();
    72234        polyItem = psMetadataGet(polyMDtemp, 2);
     
    75237        ok( !strncmp(polyItem->name, "VAL_X00_Y00", 14) &&
    76238            abs(polyItem->data.F64-1.1) < DBL_EPSILON,
    77             "psPolynomial2DtoMetadata:      return correct first element.");
    78         polyItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     239            "psPolynomial2DtoMetadata:     return correct first element.");
     240        polyItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL-1);
    79241        ok( !strncmp(polyItem->name, "ERR_X01_Y01", 14) &&
    80242            abs(polyItem->data.F64-0.4) < DBL_EPSILON,
    81             "psPolynomial2DtoMetadata:      return correct last element.");
     243            "psPolynomial2DtoMetadata:     return correct last element.");
    82244        skip_end();
    83245        skip_end();
     
    90252
    91253        ok( psPolynomial2DtoMetadata(md, p2d, "polyMD"),
    92             "psPolynomial2DtoMetadata:      return true for valid inputs.");
     254            "psPolynomial2DtoMetadata:     return true for valid inputs.");
    93255
    94256        psMetadataConfigWrite (md, "test.md");
     
    101263        bool status;
    102264        int nX = psMetadataLookupS32(&status, polyMDtemp, "NORDER_X");
    103         ok(status, "psPolynomial2DtoMetadata: found NORDER_X");
    104         ok(nX == 1, "psPolynomial2DtoMetadata: NORDER_X is 1");
     265        ok(status,
     266           "psPolynomial2DtoMetadata:     found NORDER_X");
     267        ok(nX == 1,
     268           "psPolynomial2DtoMetadata:     NORDER_X is 1");
    105269
    106270        int nY = psMetadataLookupS32(&status, polyMDtemp, "NORDER_Y");
    107         ok(status, "psPolynomial2DtoMetadata: found NORDER_Y");
    108         ok(nY == 1, "psPolynomial2DtoMetadata: NORDER_Y is 1");
     271        ok(status,
     272           "psPolynomial2DtoMetadata:     found NORDER_Y");
     273        ok(nY == 1,
     274           "psPolynomial2DtoMetadata:     NORDER_Y is 1");
    109275
    110276        double val;
    111277        val = psMetadataLookupF64(&status, polyMDtemp, "VAL_X00_Y00");
    112         ok(status, "psPolynomial2DtoMetadata: found VAL_X00_Y00");
    113         ok_double(val, 1.1, "psPolynomial2DtoMetadata: VAL_X00_Y00 is %lf", val);
     278        ok(status,
     279           "psPolynomial2DtoMetadata:     found VAL_X00_Y00");
     280        ok_double(val, 1.1,
     281                  "psPolynomial2DtoMetadata:     VAL_X00_Y00 is %lf", val);
    114282
    115283        val = psMetadataLookupF64(&status, polyMDtemp, "VAL_X01_Y01");
    116         ok(status, "psPolynomial2DtoMetadata: found VAL_X01_Y01");
    117         ok_double(val, 4.4, "psPolynomial2DtoMetadata: VAL_X01_Y01 is %lf", val);
     284        ok(status,
     285           "psPolynomial2DtoMetadata:     found VAL_X01_Y01");
     286        ok_double(val, 4.4,
     287                  "psPolynomial2DtoMetadata:     VAL_X01_Y01 is %lf", val);
    118288
    119289        skip_end();
     
    123293    {
    124294        ok( !psPolynomial2DtoMetadata(md, p2d, ""),
    125             "psPolynomial2DtoMetadata:      return false for no-name.");
     295            "psPolynomial2DtoMetadata:     return false for no-name.");
    126296    }
    127297    //Return false for NULL-name polynomial
    128298    {
    129299        ok( !psPolynomial2DtoMetadata(md, p2d, NULL),
    130             "psPolynomial2DtoMetadata:      return false for NULL name input.");
     300            "psPolynomial2DtoMetadata:     return false for NULL name input.");
    131301    }
    132302    //Return false for NULL metadata input
    133303    {
    134304        ok( !psPolynomial2DtoMetadata(NULL, p2d, "polyMD"),
    135             "psPolynomial2DtoMetadata:      return false for NULL metadata input.");
     305            "psPolynomial2DtoMetadata:     return false for NULL metadata input.");
    136306    }
    137307    //Return false for NULL polynomial input
    138308    {
    139309        ok( !psPolynomial2DtoMetadata(md, NULL, "polyMD"),
    140             "psPolynomial2DtoMetadata:      return false for NULL polynomial input.");
    141     }
    142     //Return false for empty polynomial
    143     {
    144         psPolynomial2D *emptyPoly = psPolynomial2DAlloc(PS_POLYNOMIAL_ORD, 0, 0);
    145         ok( !psPolynomial2DtoMetadata(md, emptyPoly, "polyMD"),
    146             "psPolynomial2DtoMetadata:     return false for empty polynomial input.");
    147         psFree(emptyPoly);
     310            "psPolynomial2DtoMetadata:     return false for NULL polynomial input.");
    148311    }
    149312    //Return true for polynomial with 1 element, a constant
     
    184347        skip_end();
    185348    }
    186     //Set poly->mask[1][1] = 1 for missing [1][1] element in metadata
    187     psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL-1);
     349    //Get a polynomial from Metadata with mask[0][0] == 1.
     350    psFree(outPoly);
     351    outPoly = NULL;
     352    psPolynomial2D *maskPoly = psPolynomial2DAlloc(PS_POLYNOMIAL_ORD, 0, 0);
     353    maskPoly->coeff[0][0] = 6.66;
     354    maskPoly->mask[0][0] = 1;
     355    psMetadata *newmd = psMetadataAlloc();
     356    psPolynomial2DtoMetadata(newmd, maskPoly, "polyMD");
     357    psMetadata *polyMask = psMetadataLookupMetadata(NULL, newmd, "polyMD");
     358    outPoly = psPolynomial2DfromMetadata(polyMask);
     359    {
     360        ok( outPoly->type == PS_POLYNOMIAL_ORD && outPoly->nX == 0 &&
     361            outPoly->nY == 0 && outPoly->mask[0][0] == 1,
     362            "psPolynomial2DfromMetadata:   return correct polynomial (w/mask) from metadata");
     363    }
     364    psFree(maskPoly);
     365    psFree(newmd);
     366    //Return NULL for wrong NELEMENTS
     367    psMetadataItem *nElementItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     368    nElementItem->data.S32 -= 1;
    188369    psFree(outPoly);
    189370    outPoly = NULL;
    190371    outPoly = psPolynomial2DfromMetadata(polyMDtemp);
    191372    {
    192         //        ok( outPoly->mask[1][1] == 1,
    193         //            "psPolynomial2DfromMetadata:   return mask[1][1] == 1 for metadata-polynomial",
    194         //            " with missing element");
    195         ok( outPoly == NULL,
    196             "psPolynomial2DfromMetadata:   return NULL for polynomial with missing coeff");
    197     }
     373        ok( outPoly == NULL,
     374            "psPolynomial2DfromMetadata:   "
     375            "return NULL for metadata-polynomial with wrong NELEMENTS");
     376    }
     377    //Return NULL for missing NELEMENTS
     378    psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL);
     379    psFree(outPoly);
     380    outPoly = NULL;
     381    outPoly = psPolynomial2DfromMetadata(polyMDtemp);
     382    {
     383        ok( outPoly == NULL,
     384            "psPolynomial2DfromMetadata:   "
     385            "return NULL for metadata-polynomial with no NELEMENTS");
     386    }
     387
    198388    //Return NULL for polynomial in metadata with no y-order
    199389    psMetadataRemoveKey(polyMDtemp, "NORDER_Y");
     390    psFree(outPoly);
     391    outPoly = NULL;
    200392    outPoly = psPolynomial2DfromMetadata(polyMDtemp);
    201393    {
    202394        ok( outPoly == NULL,
    203             "psPolynomial2DfromMetadata:   return NULL for metadata-polynomial with no y-order");
     395            "psPolynomial2DfromMetadata:   "
     396            "return NULL for metadata-polynomial with no y-order");
    204397    }
    205398    //Return NULL for polynomial in metadata with no x-order
    206399    psMetadataRemoveKey(polyMDtemp, "NORDER_X");
     400    psFree(outPoly);
     401    outPoly = NULL;
    207402    outPoly = psPolynomial2DfromMetadata(polyMDtemp);
    208403    {
    209404        ok( outPoly == NULL,
    210             "psPolynomial2DfromMetadata:   return NULL for metadata-polynomial with no x-order");
     405            "psPolynomial2DfromMetadata:   "
     406            "return NULL for metadata-polynomial with no x-order");
    211407    }
    212408
     
    222418void test3Dcase(void)
    223419{
    224     diag("  >>>Test 2:  psPolynomial3DtoMetadata & psPolynomial3DfromMetadata functions");
     420    diag("  >>>Test 3:  psPolynomial3DtoMetadata & psPolynomial3DfromMetadata functions");
    225421    psMetadata *md = psMetadataAlloc();
    226422    psPolynomial3D *p3d = psPolynomial3DAlloc(PS_POLYNOMIAL_ORD, 1, 1, 1);
     
    268464            abs(polyItem->data.F64-1.1) < DBL_EPSILON,
    269465            "psPolynomial3DtoMetadata:     return correct first element.");
    270         polyItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     466        polyItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL-1);
    271467        ok( !strncmp(polyItem->name, "ERR_X01_Y01_Z01", 14) &&
    272468            abs(polyItem->data.F64-0.8) < DBL_EPSILON,
     
    295491            "psPolynomial3DtoMetadata:     return false for NULL polynomial input.");
    296492    }
    297     //Return false for empty polynomial
    298     {
    299         psPolynomial3D *emptyPoly = psPolynomial3DAlloc(PS_POLYNOMIAL_ORD, 0, 0, 0);
    300         ok( !psPolynomial3DtoMetadata(md, emptyPoly, "polyMD"),
    301             "psPolynomial3DtoMetadata:     return false for empty polynomial input.");
    302         psFree(emptyPoly);
    303     }
     493    /*    //Return false for empty polynomial
     494        {
     495            psPolynomial3D *emptyPoly = psPolynomial3DAlloc(PS_POLYNOMIAL_ORD, 0, 0, 0);
     496            ok( !psPolynomial3DtoMetadata(md, emptyPoly, "polyMD"),
     497                "psPolynomial3DtoMetadata:     return false for empty polynomial input.");
     498            psFree(emptyPoly);
     499        }
     500    */
    304501    //Return true for polynomial with 1 element, a constant
    305502    {
     
    340537        skip_end();
    341538    }
    342     //Return NULL for polynomial with missing coefficient
    343     psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL-1);
     539
     540    //Get a polynomial from Metadata with mask[0][0][0] == 1.
     541    psFree(outPoly);
     542    outPoly = NULL;
     543    psPolynomial3D *maskPoly = psPolynomial3DAlloc(PS_POLYNOMIAL_ORD, 0, 0, 0);
     544    maskPoly->coeff[0][0][0] = 6.66;
     545    maskPoly->mask[0][0][0] = 1;
     546    psMetadata *newmd = psMetadataAlloc();
     547    psPolynomial3DtoMetadata(newmd, maskPoly, "polyMD");
     548    psMetadata *polyMask = psMetadataLookupMetadata(NULL, newmd, "polyMD");
     549    outPoly = psPolynomial3DfromMetadata(polyMask);
     550    {
     551        ok( outPoly->type == PS_POLYNOMIAL_ORD && outPoly->nX == 0 && outPoly->nY == 0
     552            && outPoly->nZ == 0 && outPoly->mask[0][0][0] == 1,
     553            "psPolynomial3DfromMetadata:   return correct polynomial (w/mask) from metadata");
     554    }
     555    psFree(maskPoly);
     556    psFree(newmd);
     557    //Return NULL for wrong NELEMENTS
     558    psMetadataItem *nElementItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     559    nElementItem->data.S32 -= 1;
    344560    psFree(outPoly);
    345561    outPoly = NULL;
    346562    outPoly = psPolynomial3DfromMetadata(polyMDtemp);
    347563    {
    348         //        ok( outPoly->mask[1][1][1] == 1,
    349         //            "psPolynomial3DfromMetadata:   return mask[1][1][1] == 1 for metadata-polynomial"
    350         //            " with missing element");
    351         ok( outPoly == NULL,
    352             "psPolynomial3DfromMetadata:   return NULL for polynomial with missing coeff");
    353     }
     564        ok( outPoly == NULL,
     565            "psPolynomial3DfromMetadata:   "
     566            "return NULL for metadata-polynomial with wrong NELEMENTS");
     567    }
     568    //Return NULL for missing NELEMENTS
     569    psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL);
     570    psFree(outPoly);
     571    outPoly = NULL;
     572    outPoly = psPolynomial3DfromMetadata(polyMDtemp);
     573    {
     574        ok( outPoly == NULL,
     575            "psPolynomial3DfromMetadata:   "
     576            "return NULL for metadata-polynomial with no NELEMENTS");
     577    }
     578
    354579    //Return NULL for polynomial in metadata with no z-order
    355580    psMetadataRemoveKey(polyMDtemp, "NORDER_Z");
     581    psFree(outPoly);
     582    outPoly = NULL;
    356583    outPoly = psPolynomial3DfromMetadata(polyMDtemp);
    357584    {
     
    361588    //Return NULL for polynomial in metadata with no y-order
    362589    psMetadataRemoveKey(polyMDtemp, "NORDER_Y");
     590    psFree(outPoly);
     591    outPoly = NULL;
    363592    outPoly = psPolynomial3DfromMetadata(polyMDtemp);
    364593    {
     
    368597    //Return NULL for polynomial in metadata with no x-order
    369598    psMetadataRemoveKey(polyMDtemp, "NORDER_X");
     599    psFree(outPoly);
     600    outPoly = NULL;
    370601    outPoly = psPolynomial3DfromMetadata(polyMDtemp);
    371602    {
     
    385616void test4Dcase(void)
    386617{
    387     diag("  >>>Test 3:  psPolynomial4DtoMetadata & psPolynomial4DfromMetadata functions");
     618    diag("  >>>Test 4:  psPolynomial4DtoMetadata & psPolynomial4DfromMetadata functions");
    388619    psMetadata *md = psMetadataAlloc();
    389620    psPolynomial4D *p4d = psPolynomial4DAlloc(PS_POLYNOMIAL_ORD, 1, 1, 1, 1);
     
    457688            abs(polyItem->data.F64-1.1) < DBL_EPSILON,
    458689            "psPolynomial4DtoMetadata:     return correct first element.");
    459         polyItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     690        polyItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL-1);
    460691        ok( !strncmp(polyItem->name, "ERR_X01_Y01_Z01_T01", 14) &&
    461692            abs(polyItem->data.F64-0.16) < DBL_EPSILON,
     
    484715            "psPolynomial4DtoMetadata:     return false for NULL polynomial input.");
    485716    }
    486     //Return false for empty polynomial
    487     {
    488         psPolynomial4D *emptyPoly = psPolynomial4DAlloc(PS_POLYNOMIAL_ORD, 0, 0, 0, 0);
    489         ok( !psPolynomial4DtoMetadata(md, emptyPoly, "polyMD"),
    490             "psPolynomial4DtoMetadata:     return false for empty polynomial input.");
    491         psFree(emptyPoly);
    492     }
     717    /*    //Return false for empty polynomial
     718        {
     719            psPolynomial4D *emptyPoly = psPolynomial4DAlloc(PS_POLYNOMIAL_ORD, 0, 0, 0, 0);
     720            ok( !psPolynomial4DtoMetadata(md, emptyPoly, "polyMD"),
     721                "psPolynomial4DtoMetadata:     return false for empty polynomial input.");
     722            psFree(emptyPoly);
     723        }
     724    */
    493725    //Return true for polynomial with 1 element, a constant
    494726    {
     
    529761        skip_end();
    530762    }
    531     //Return NULL for polynomial with missing coefficient
    532     psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL-1);
     763    //Get a polynomial from Metadata with mask[0][0][0][0] == 1.
     764    psFree(outPoly);
     765    outPoly = NULL;
     766    psPolynomial4D *maskPoly = psPolynomial4DAlloc(PS_POLYNOMIAL_ORD, 0, 0, 0, 0);
     767    maskPoly->coeff[0][0][0][0] = 6.66;
     768    maskPoly->mask[0][0][0][0] = 1;
     769    psMetadata *newmd = psMetadataAlloc();
     770    psPolynomial4DtoMetadata(newmd, maskPoly, "polyMD");
     771    psMetadata *polyMask = psMetadataLookupMetadata(NULL, newmd, "polyMD");
     772    outPoly = psPolynomial4DfromMetadata(polyMask);
     773    {
     774        ok( outPoly->type == PS_POLYNOMIAL_ORD && outPoly->nX == 0 && outPoly->nY == 0
     775            && outPoly->nZ == 0 && outPoly->nT == 0 && outPoly->mask[0][0][0][0] == 1,
     776            "psPolynomial4DfromMetadata:   return correct polynomial (w/mask) from metadata");
     777    }
     778    psFree(maskPoly);
     779    psFree(newmd);
     780    //Return NULL for wrong NELEMENTS
     781    psMetadataItem *nElementItem = psMetadataGet(polyMDtemp, PS_LIST_TAIL);
     782    nElementItem->data.S32 -= 1;
    533783    psFree(outPoly);
    534784    outPoly = NULL;
    535785    outPoly = psPolynomial4DfromMetadata(polyMDtemp);
    536786    {
    537         //        ok( outPoly->mask[1][1][1] == 1,
    538         //            "psPolynomial4DfromMetadata:   return mask[1][1][1] == 1 for metadata-polynomial"
    539         //            " with missing element");
    540         ok( outPoly == NULL,
    541             "psPolynomial4DfromMetadata:   return NULL for polynomial with missing coeff");
    542     }
     787        ok( outPoly == NULL,
     788            "psPolynomial4DfromMetadata:   "
     789            "return NULL for metadata-polynomial with wrong NELEMENTS");
     790    }
     791    //Return NULL for missing NELEMENTS
     792    psMetadataRemoveIndex(polyMDtemp, PS_LIST_TAIL);
     793    psFree(outPoly);
     794    outPoly = NULL;
     795    outPoly = psPolynomial4DfromMetadata(polyMDtemp);
     796    {
     797        ok( outPoly == NULL,
     798            "psPolynomial4DfromMetadata:   "
     799            "return NULL for metadata-polynomial with no NELEMENTS");
     800    }
     801
    543802    //Return NULL for polynomial in metadata with no t-order
    544803    psMetadataRemoveKey(polyMDtemp, "NORDER_T");
     804    psFree(outPoly);
     805    outPoly = NULL;
    545806    outPoly = psPolynomial4DfromMetadata(polyMDtemp);
    546807    {
     
    550811    //Return NULL for polynomial in metadata with no z-order
    551812    psMetadataRemoveKey(polyMDtemp, "NORDER_Z");
     813    psFree(outPoly);
     814    outPoly = NULL;
    552815    outPoly = psPolynomial4DfromMetadata(polyMDtemp);
    553816    {
     
    557820    //Return NULL for polynomial in metadata with no y-order
    558821    psMetadataRemoveKey(polyMDtemp, "NORDER_Y");
     822    psFree(outPoly);
     823    outPoly = NULL;
    559824    outPoly = psPolynomial4DfromMetadata(polyMDtemp);
    560825    {
     
    564829    //Return NULL for polynomial in metadata with no x-order
    565830    psMetadataRemoveKey(polyMDtemp, "NORDER_X");
     831    psFree(outPoly);
     832    outPoly = NULL;
    566833    outPoly = psPolynomial4DfromMetadata(polyMDtemp);
    567834    {
Note: See TracChangeset for help on using the changeset viewer.