Changeset 4212 for trunk/psLib/test/collections/tst_psVector.c
- Timestamp:
- Jun 10, 2005, 11:46:46 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/psLib/test/collections/tst_psVector.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/collections/tst_psVector.c
r3682 r4212 14 14 * @author Ross Harman, MHPCC 15 15 * 16 * @version $Revision: 1. 8$ $Name: not supported by cvs2svn $17 * @date $Date: 2005-0 4-07 20:27:41$16 * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $ 17 * @date $Date: 2005-06-10 21:46:46 $ 18 18 * 19 19 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 21 21 */ 22 22 23 #include "psTest.h" 23 24 #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 26 static psS32 testVectorAlloc(void); 27 static psS32 testVectorRealloc(void); 28 static psS32 testVectorExtend(void); 29 30 testDescription tests[] = { 31 {testVectorAlloc,-1,"psVectorAlloc",0,false}, 32 {testVectorRealloc,-2,"psVectorRealloc",0,false}, 33 {testVectorExtend,-3,"psVectorExtend",0,false}, 34 {NULL} 35 }; 36 37 psS32 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 47 psS32 testVectorAlloc(void) 48 { 33 49 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 } 39 72 40 73 // Test B - Add data to integer vector 41 printPositiveTestHeader(stdout, "psVector", "Add data to S32 vector");42 74 for(psS32 i = 0; i < 5; i++) { 43 75 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 105 psS32 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 } 50 116 51 117 // Test C - Reallocate S32 vector bigger 52 printPositiveTestHeader(stdout,"psVector", "Reallocate S32 vector bigger");53 118 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 55 141 for(psS32 i = 5; i < 10; i++) { 56 142 psVec->data.S32[i] = i*10; 57 143 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 } 64 152 65 153 // Test D - Reallocate S32 vector smaller 66 printPositiveTestHeader(stdout,"psVector","Reallocate S32 vector smaller");67 154 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 69 168 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 } 76 194 77 195 // Test E - Free S32 vector 78 printPositiveTestHeader(stdout, "psVector", "Free S32 vector");79 196 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 201 psS32 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.
