IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 10, 2005, 11:46:46 AM (21 years ago)
Author:
desonia
Message:

fixed bug in psPixels and tested psVectorExtend.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/test/collections/tst_psVector.c

    r3682 r4212  
    1414 *  @author  Ross Harman, MHPCC
    1515 *
    16  *  @version $Revision: 1.8 $  $Name: not supported by cvs2svn $
    17  *  @date  $Date: 2005-04-07 20:27:41 $
     16 *  @version $Revision: 1.9 $  $Name: not supported by cvs2svn $
     17 *  @date  $Date: 2005-06-10 21:46:46 $
    1818 *
    1919 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2121 */
    2222
     23#include "psTest.h"
    2324#include "pslib_strict.h"
    24 #include "psTest.h"
    25 
    26 psS32 main(psS32 argc,
    27            char* argv[])
    28 {
    29 
    30 
    31     // Test A - Create S32 vector
    32     printPositiveTestHeader(stdout,"psVector", "Create S32 vector");
     25
     26static psS32 testVectorAlloc(void);
     27static psS32 testVectorRealloc(void);
     28static psS32 testVectorExtend(void);
     29
     30testDescription tests[] = {
     31                              {testVectorAlloc,-1,"psVectorAlloc",0,false},
     32                              {testVectorRealloc,-2,"psVectorRealloc",0,false},
     33                              {testVectorExtend,-3,"psVectorExtend",0,false},
     34                              {NULL}
     35                          };
     36
     37psS32 main(psS32 argc, char* argv[])
     38{
     39    psLogSetLevel(PS_LOG_INFO);
     40
     41    if ( ! runTestSuite(stderr,"psVector",tests,argc,argv) ) {
     42        return 1;
     43    }
     44    return 0;
     45}
     46
     47psS32 testVectorAlloc(void)
     48{
    3349    psVector *psVec = psVectorAlloc(5, PS_TYPE_S32);
    34     printf("Vector size = %d\n", psVec->nalloc);
    35     printf("Vector type = %d\n", psVec->type.type);
    36     printf("Vector dimen = %d\n", psVec->type.dimen);
    37     printFooter(stdout, "psVector", "Create S32 vector", true);
    38 
     50
     51    if (psVec == NULL) {
     52        fprintf(stderr,"ERROR: Return is NULL\n");
     53        return 1;
     54    }
     55    if (psVec->nalloc != 5) {
     56        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     57        return 1;
     58    }
     59    if (psVec->n != psVec->nalloc) {
     60        fprintf(stderr,"Vector population = %d\n", psVec->n);
     61        return 2;
     62    }
     63
     64    if (psVec->type.type != PS_TYPE_S32) {
     65        fprintf(stderr,"Vector type = %d\n", psVec->type.type);
     66        return 3;
     67    }
     68    if (psVec->type.dimen != PS_DIMEN_VECTOR) {
     69        fprintf(stderr,"Vector dimen = %d\n", psVec->type.dimen);
     70        return 4;
     71    }
    3972
    4073    // Test B - Add data to integer vector
    41     printPositiveTestHeader(stdout, "psVector", "Add data to S32 vector");
    4274    for(psS32 i = 0; i < 5; i++) {
    4375        psVec->data.S32[i] = i*10;
    44         printf("Elem %d = %d\n", i, psVec->data.S32[i]);
    45     }
    46     printf("Vector size = %d\n", psVec->nalloc);
    47     printf("Vector population = %d\n", psVec->n);
    48     printFooter(stdout, "psVector", "Add data to S32 vector", true);
    49 
     76    }
     77
     78    psVector* vecZero = psVectorAlloc(0, PS_TYPE_S32);
     79    if(vecZero == NULL) {
     80        fprintf(stderr,"ERROR: Return is NULL\n");
     81        return 5;
     82    }
     83    if (vecZero->nalloc != 0) {
     84        fprintf(stderr,"Vector size = %d\n", vecZero->nalloc);
     85        return 6;
     86    }
     87    if (vecZero->n != vecZero->nalloc) {
     88        fprintf(stderr,"Vector population = %d\n", vecZero->n);
     89        return 7;
     90    }
     91
     92    psLogMsg(__func__,PS_LOG_INFO, "Following should be an error.");
     93    psVector* vecBogus = psVectorAlloc(10, 0);
     94    if (vecBogus != NULL) {
     95        fprintf(stderr,"Huh!  bogus type generated a psVector?");
     96        return 20;
     97    }
     98
     99    psFree(psVec);
     100    psFree(vecZero);
     101
     102    return 0;
     103}
     104
     105psS32 testVectorRealloc(void)
     106{
     107    // create new psVector
     108    psVector *psVec = psVectorAlloc(5, PS_TYPE_S32);
     109    if (psVec == NULL) {
     110        fprintf(stderr,"ERROR: Return is NULL\n");
     111        return 30;
     112    }
     113    for(psS32 i = 0; i < 5; i++) {
     114        psVec->data.S32[i] = i*10;
     115    }
    50116
    51117    // Test C - Reallocate S32 vector bigger
    52     printPositiveTestHeader(stdout,"psVector", "Reallocate S32 vector bigger");
    53118    psVec = psVectorRealloc(psVec,10);
    54     printf("Adding more elements to S32 vector...\n");
     119    if (psVec == NULL) {
     120        fprintf(stderr,"ERROR: Return is NULL\n");
     121        return 1;
     122    }
     123    if (psVec->nalloc != 10) {
     124        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     125        return 1;
     126    }
     127    if (psVec->n != 5) {
     128        fprintf(stderr,"Vector population = %d\n", psVec->n);
     129        return 2;
     130    }
     131
     132    if (psVec->type.type != PS_TYPE_S32) {
     133        fprintf(stderr,"Vector type = %d\n", psVec->type.type);
     134        return 3;
     135    }
     136    if (psVec->type.dimen != PS_DIMEN_VECTOR) {
     137        fprintf(stderr,"Vector dimen = %d\n", psVec->type.dimen);
     138        return 4;
     139    }
     140
    55141    for(psS32 i = 5; i < 10; i++) {
    56142        psVec->data.S32[i] = i*10;
    57143        psVec->n++;
    58         printf("Elem %d = %d\n", i, psVec->data.S32[i]);
    59     }
    60     printf("Vector size = %d\n", psVec->nalloc);
    61     printf("Vector population = %d\n", psVec->n);
    62     printFooter(stdout, "psVector", "Reallocate S32 vector bigger", true);
    63 
     144    }
     145
     146    for(psS32 i = 0; i < 10; i++) {
     147        if (psVec->data.S32[i] != i*10) {
     148            fprintf(stderr,"Elem %d = %d, expected %d\n", i, psVec->data.S32[i], i*10);
     149            return 5;
     150        }
     151    }
    64152
    65153    // Test D - Reallocate S32 vector smaller
    66     printPositiveTestHeader(stdout,"psVector","Reallocate S32 vector smaller");
    67154    psVec = psVectorRealloc(psVec,3);
    68     printf("Vector size = %d\n", psVec->nalloc);
     155    if (psVec == NULL) {
     156        fprintf(stderr,"ERROR: Return is NULL\n");
     157        return 9;
     158    }
     159    if (psVec->nalloc != 3) {
     160        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     161        return 10;
     162    }
     163    if (psVec->n != 3) {
     164        fprintf(stderr,"Vector population = %d\n", psVec->n);
     165        return 11;
     166    }
     167
    69168    for(psS32 i = 0; i < 3; i++) {
    70         printf("Elem %d = %d\n", i, psVec->data.S32[i]);
    71     }
    72     printf("Vector size = %d\n", psVec->nalloc);
    73     printf("Vector population = %d\n", psVec->n);
    74     printFooter(stdout, "psVector", "Reallocate integer S32 smaller", true);
    75 
     169        if (psVec->data.S32[i] != i*10) {
     170            fprintf(stderr,"Elem %d = %d, expected %d\n", i, psVec->data.S32[i], i*10);
     171            return 12;
     172        }
     173    }
     174
     175    psVec = psVectorRealloc(psVec,0);
     176    if (psVec == NULL) {
     177        fprintf(stderr,"ERROR: Return is NULL\n");
     178        return 20;
     179    }
     180    if (psVec->nalloc != 0) {
     181        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     182        return 21;
     183    }
     184    if (psVec->n != 0) {
     185        fprintf(stderr,"Vector population = %d\n", psVec->n);
     186        return 22;
     187    }
     188
     189    psVector* vecBogus = psVectorRealloc(NULL, 6);
     190    if (vecBogus != NULL) {
     191        fprintf(stderr,"Huh!  bogus type generated a psVector?");
     192        return 25;
     193    }
    76194
    77195    // Test E - Free S32 vector
    78     printPositiveTestHeader(stdout, "psVector", "Free S32 vector");
    79196    psFree(psVec);
    80     psS32 leaks = psMemCheckLeaks(0, NULL, stdout, false);
    81     if(leaks != 0) {
    82         printf("ERROR: Found %d memory leaks\n",leaks);
    83     }
    84     psS32 nBad = psMemCheckCorruption(0);
    85     if(nBad) {
    86         printf("ERROR: Found %d bad memory blocks\n", nBad);
    87     }
    88     printFooter(stdout, "psVector" ,"Free S32 vector", true);
    89 
    90 
    91     // Test F - Attempt to create a S32 vector with zero size
    92     printNegativeTestHeader(stdout,"psVector", "Attempt to create a S32 vector with zero size",
    93                             "Invalid value for nalloc", 0);
    94     psLogMsg(__func__,PS_LOG_INFO, "Following should be an error message.");
    95     psVector *vecBad = psVectorAlloc(0, PS_TYPE_S32);
    96     if(vecBad != NULL) {
    97         printf("ERROR: Return is not NULL\n");
    98     }
    99     printFooter(stdout, "psVector", "Attempt to create a S32 vector with zero size", true);
    100 
    101 
    102     // Test G - Attempt to realloc a null S32 vector
    103     printNegativeTestHeader(stdout,"psVector", "Attempt to realloc a null S32 vector",
    104                             "Null input vector", 0);
    105     psLogMsg(__func__,PS_LOG_INFO, "Following should be an error message.");
    106     psVectorRealloc(NULL,6);
    107     printFooter(stdout, "psVector", "Attempt to realloc a null S32 vector", true);
    108 
    109     return 0;
    110 }
     197
     198    return 0;
     199}
     200
     201psS32 testVectorExtend(void)
     202{
     203    // create new psVector
     204    psVector *psVec = psVectorAlloc(5, PS_TYPE_S32);
     205    if (psVec == NULL) {
     206        fprintf(stderr,"ERROR: Return is NULL\n");
     207        return 1;
     208    }
     209
     210    psVec->n = 0;
     211
     212    psVec = psVectorExtend(psVec, 0, 2);
     213    if (psVec == NULL) {
     214        fprintf(stderr,"ERROR: Return is NULL\n");
     215        return 2;
     216    }
     217    if (psVec->nalloc != 5) { // no growth should occur
     218        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     219        return 3;
     220    }
     221    if (psVec->n != 2) {
     222        fprintf(stderr,"Vector population = %d\n", psVec->n);
     223        return 4;
     224    }
     225
     226    psVec = psVectorExtend(psVec, 0, 2);
     227    if (psVec == NULL) {
     228        fprintf(stderr,"ERROR: Return is NULL\n");
     229        return 10;
     230    }
     231    if (psVec->nalloc != 15) { // growth should occur
     232        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     233        return 11;
     234    }
     235    if (psVec->n != 4) {
     236        fprintf(stderr,"Vector population = %d\n", psVec->n);
     237        return 12;
     238    }
     239
     240    psVec = psVectorExtend(psVec, 0, -2);
     241    if (psVec == NULL) {
     242        fprintf(stderr,"ERROR: Return is NULL\n");
     243        return 20;
     244    }
     245    if (psVec->nalloc != 15) { // no growth
     246        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     247        return 21;
     248    }
     249    if (psVec->n != 2) {
     250        fprintf(stderr,"Vector population = %d\n", psVec->n);
     251        return 22;
     252    }
     253
     254    psVec = psVectorExtend(psVec, 0, -20);
     255    if (psVec == NULL) {
     256        fprintf(stderr,"ERROR: Return is NULL\n");
     257        return 30;
     258    }
     259    if (psVec->nalloc != 15) { // no growth
     260        fprintf(stderr,"Vector size = %d\n", psVec->nalloc);
     261        return 31;
     262    }
     263    if (psVec->n != 0) {
     264        fprintf(stderr,"Vector population = %d\n", psVec->n);
     265        return 32;
     266    }
     267
     268    psFree(psVec);
     269
     270    return 0;
     271}
Note: See TracChangeset for help on using the changeset viewer.