IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 6, 2004, 2:31:55 PM (22 years ago)
Author:
gusciora
Message:

Most of these tests work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/test/dataManip/tst_psStats00.c

    r717 r887  
    1111{
    1212    psStats *myStats    = NULL;
    13     psStats *myStats2   = NULL;
    1413    int testStatus      = true;
     14    int globalTestStatus = true;
    1515    int i               = 0;
    1616    psVector *myVector  = NULL;
    1717    psVector *maskVector= NULL;
    1818    float mean          = 0.0;
    19     float realMean   = 0.0;
    20     float realMean2    = 0.0;
     19    float realMeanNoMask   = 0.0;
     20    float realMeanWithMask = 0.0;
    2121    int count           = 0;
     22    int currentId       = psMemGetId();
     23    int memLeaks        = 0;
    2224
    23     printPositiveTestHeader(stdout,
    24                             "psStats functions",
    25                             "PS_STAT_SAMPLE_MEAN");
    26 
     25    /*************************************************************************/
     26    /*  Allocate and initialize data structures                      */
     27    /*************************************************************************/
    2728    myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
    28     myVector = psVectorAlloc(PS_TYPE_FLOAT, N);
     29    myVector = psVectorAlloc(N, PS_TYPE_F32);
    2930    myVector->n = N;
    30     maskVector = psVectorAlloc(PS_TYPE_UINT8, N);
     31    maskVector = psVectorAlloc(N, PS_TYPE_U8);
    3132    maskVector->n = N;
    3233
    3334    mean = 0.0;
    34     realMean2 = 0.0;
     35    realMeanWithMask = 0.0;
     36    // Set the appropriate values for the vector data.
    3537    for (i=0;i<N;i++) {
    36         myVector->vec.f[i] = (float) i;
     38        myVector->data.F32[i] = (float) i;
     39    }
     40
     41    // Set the mask vector and calculate the expected maximum.
     42    for (i=0;i<N;i++) {
     43        realMeanNoMask+= myVector->data.F32[i];
     44
    3745        if (i < (N/2)) {
    38             maskVector->vec.ui8[i] = 0;
    39             realMean2+= myVector->vec.f[i];
     46            maskVector->data.U8[i] = 0;
     47            realMeanWithMask+= myVector->data.F32[i];
    4048            count++;
    4149        } else {
    42             printf("Masking element %d\n", i);
    43             maskVector->vec.ui8[i] = 1;
     50            maskVector->data.U8[i] = 1;
    4451        }
    45         realMean1+= myVector->vec.f[i];
    4652    }
    47     realMean1 /= (float) N;
    48     realMean2 /= (float) count;
     53    realMeanNoMask /= (float) N;
     54    realMeanWithMask /= (float) count;
    4955
    50     myStats2 = psArrayStats(myVector, NULL, 0, myStats);
    51     mean = myStats2->sampleMean;
     56    /*************************************************************************/
     57    /*  Call psVectorStats() with no vector mask.                    */
     58    /*************************************************************************/
     59    printPositiveTestHeader(stdout,
     60                            "psStats functions",
     61                            "PS_STAT_SAMPLE_MEAN: no vector mask");
    5262
    53     printf("Called psArrayStats() on a vector with no elements masked.\n");
    54     printf("The expected mean was %f; the calculated mean was %f\n", realMean1, mean);
    55     if (mean == realMean1) {
     63    myStats = psVectorStats(myStats, myVector, NULL, 0);
     64    mean = myStats->sampleMean;
     65
     66    printf("Called psVectorStats() on a vector with no elements masked.\n");
     67    printf("The expected mean was %f; the calculated mean was %f\n", realMeanNoMask, mean);
     68    if (mean == realMeanNoMask) {
    5669        testStatus = true;
    5770    } else {
    5871        testStatus = false;
     72        globalTestStatus = false;
    5973    }
     74    printFooter(stdout,
     75                "psVector functions",
     76                "PS_STAT_SAMPLE_MEAN: no vector mask",
     77                testStatus);
    6078
    61     myStats2 = psArrayStats(myVector, maskVector, 1, myStats);
    62     mean = myStats2->sampleMean;
    63     printf("Called psArrayStats() on a vector with last N/2 elements masked.\n");
    64     printf("The expected mean was %f; the calculated mean was %f\n", realMean2, mean);
    65     if (mean == realMean2) {
     79    /*************************************************************************/
     80    /*  Call psVectorStats() with vector mask.                       */
     81    /*************************************************************************/
     82    printPositiveTestHeader(stdout,
     83                            "psStats functions",
     84                            "PS_STAT_SAMPLE_MEAN: with vector mask");
     85
     86    myStats = psVectorStats(myStats, myVector, maskVector, 1);
     87    mean = myStats->sampleMean;
     88    printf("Called psVectorStats() on a vector with last N/2 elements masked.\n");
     89    printf("The expected mean was %f; the calculated mean was %f\n", realMeanWithMask, mean);
     90    if (mean == realMeanWithMask) {
    6691        testStatus = true;
    6792    } else {
    6893        testStatus = false;
     94        globalTestStatus = false;
    6995    }
    7096
    7197    printFooter(stdout,
    72                 "psHash functions",
    73                 "psHashAlloc()",
     98                "psVector functions",
     99                "PS_STAT_SAMPLE_MEAN: with vector mask",
    74100                testStatus);
    75101
    76     return (!testStatus);
     102    /*************************************************************************/
     103    /*  Deallocate data structures                                   */
     104    /*************************************************************************/
     105    printPositiveTestHeader(stdout,
     106                            "psStats functions",
     107                            "psStats(): deallocating memory");
     108
     109    psStatsFree(myStats);
     110    psVectorFree(myVector);
     111    psVectorFree(maskVector);
     112
     113    psMemCheckCorruption(1);
     114    memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
     115    if (0 != memLeaks) {
     116        psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);
     117    }
     118
     119    printFooter(stdout,
     120                "psVector functions",
     121                "psStats(): deallocating memory",
     122                testStatus);
     123
     124    return (!globalTestStatus);
    77125}
Note: See TracChangeset for help on using the changeset viewer.