Changeset 9143
- Timestamp:
- Oct 2, 2006, 8:51:47 PM (20 years ago)
- Location:
- trunk/psLib
- Files:
-
- 7 edited
-
src/types/psList.c (modified) (3 diffs)
-
src/types/psLookupTable.c (modified) (4 diffs)
-
test/types/Makefile.am (modified) (1 diff)
-
test/types/execute_tap (modified) (1 diff)
-
test/types/tap_psArray_all.c (modified) (23 diffs)
-
test/types/tap_psBitSet_all.c (modified) (1 diff)
-
test/types/tap_psList_all.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/types/psList.c
r9086 r9143 6 6 * @author Robert Daniel DeSonia, MHPCC 7 7 * 8 * @version $Revision: 1.5 3$ $Name: not supported by cvs2svn $9 * @date $Date: 2006-10-0 2 06:05:53$8 * @version $Revision: 1.54 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2006-10-03 06:51:47 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 574 574 } 575 575 576 if (list->n > 0) { 577 arr = psArrayAlloc(list->n); 578 } else { 579 arr = psArrayAlloc(1); 580 } 581 576 //XXX: Following is unnecessary as a list->n = 0 should do ArrayAlloc(0) I believe. 577 /* if (list->n > 0) { 578 arr = psArrayAlloc(list->n); 579 } else { 580 arr = psArrayAlloc(1); 581 } 582 */ 583 arr = psArrayAlloc(list->n); 582 584 arr->n = list->n; 583 585 … … 618 620 return NULL; 619 621 } 622 if (func == NULL) { 623 psError(PS_ERR_BAD_PARAMETER_NULL, true, 624 _("Specified psComparePtrFunc is NULL.")); 625 return list; 626 } 620 627 // convert to indexable vector for use by qsort. 621 628 arr = psListToArray(list); -
trunk/psLib/src/types/psLookupTable.c
r8627 r9143 7 7 * @author Ross Harman, MHPCC 8 8 * 9 * @version $Revision: 1.3 7$ $Name: not supported by cvs2svn $10 * @date $Date: 2006- 08-26 04:34:28$9 * @version $Revision: 1.38 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-10-03 06:51:47 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, Univ. of Hawaii … … 253 253 static void lookupTableFree(psLookupTable* table) 254 254 { 255 if (table == NULL) {256 return;257 }258 259 255 psFree(table->values); 260 256 psFree(table->filename); … … 279 275 long indexCol) 280 276 { 281 psLookupTable *outTable = NULL;282 283 277 // Can't read table if you don't know its name 284 278 PS_ASSERT_PTR_NON_NULL(filename,NULL); … … 286 280 // Can't read table if you don't know its format 287 281 PS_ASSERT_PTR_NON_NULL(format,NULL); 282 283 psLookupTable *outTable = NULL; 288 284 289 285 // Allocate lookup table -
trunk/psLib/test/types/Makefile.am
r9082 r9143 28 28 tap_psHash_all \ 29 29 tap_psBitSet_all \ 30 tap_psList_all 30 tap_psList_all \ 31 tap_psLookupTable_all 31 32 32 33 if BUILD_TESTS -
trunk/psLib/test/types/execute_tap
r9082 r9143 17 17 ./tap_psBitSet_all 18 18 ./tap_psList_all 19 ./tap_psLookupTable_all -
trunk/psLib/test/types/tap_psArray_all.c
r8731 r9143 24 24 int main(void) 25 25 { 26 plan_tests(2 5);26 plan_tests(28); 27 27 28 28 diag("Tests for psArray Functions"); … … 41 41 psArray *a = NULL; 42 42 43 //Tests for psArrayAlloc 43 44 //Return NULL on attempting to allocate a negative size array 44 45 { 45 46 a = psArrayAlloc(-2); 46 47 ok( a == NULL, 47 "psArrayAlloc: return NULL for negative array-size input.");48 "psArrayAlloc: return NULL for negative array-size input."); 48 49 } 49 50 //Return properly allocated psArray … … 51 52 a = psArrayAlloc(0); 52 53 ok( a != NULL && psMemCheckArray(a), 53 "psArrayAlloc: return properly allocated psArray."); 54 } 54 "psArrayAlloc: return properly allocated psArray."); 55 } 56 //Tests for psMemCheckArray 55 57 //Make sure psMemCheckArray works correctly - return false 56 58 { 57 59 int j = 2; 58 60 ok( !psMemCheckArray(&j), 59 "psMemCheckArray: return false for non-Array input."); 60 } 61 "psMemCheckArray: return false for non-Array input."); 62 } 63 //Tests for psArrayRealloc 61 64 //Now try to reallocate the psArray - bigger 62 65 { 63 66 a = psArrayRealloc(a, 2); 64 67 ok ( psArrayLength(a) == 0 && a->nalloc == 2, 65 "psArrayRealloc: return properly reallocated psArray.");68 "psArrayRealloc: return properly reallocated psArray."); 66 69 } 67 70 //Return NULL when trying to reallocate a NULL psArray … … 70 73 temp = psArrayRealloc(temp, 1); 71 74 ok( temp == NULL, 72 "psArrayRealloc: return NULL for NULL input psArray.");75 "psArrayRealloc: return NULL for NULL input psArray."); 73 76 } 74 77 //Attempt to reallocate the psArray - smaller … … 83 86 *s32_2 = *((psS32*)(a->data[0])); 84 87 ok( a->n == 1 && a->nalloc == 1 && *s32_2 == 1, 85 "psArrayRealloc: return properly reallocated psArray.");88 "psArrayRealloc: return properly reallocated psArray."); 86 89 skip_end(); 87 90 psFree(s32); … … 95 98 *s32 = *((psS32*)(a->data[0])); 96 99 ok( a->n == 1 && a->nalloc == 1 && *s32 == 1, 97 "psArrayRealloc: return same psArray for negative-size input.");100 "psArrayRealloc: return same psArray for negative-size input."); 98 101 psFree(s32); 99 102 } 103 100 104 //Attempt to free a NULL psArray 101 105 psArrayElementsFree(NULL); … … 104 108 psArray *emptyArray = NULL; 105 109 ok( psArrayLength(emptyArray) == -1, 106 "psArrayLength: return -1 for NULL input psArray.");110 "psArrayLength: return -1 for NULL input psArray."); 107 111 } 108 112 … … 123 127 psS32 *s3 = (psS32*)psAlloc(sizeof(psS32)); 124 128 129 //Tests for psArrayAdd 125 130 //Attempt to add element to NULL psArray. 126 131 { … … 129 134 *s3 = *((psS32*)(temp->data[0])); 130 135 ok( temp->n == 1 && temp->nalloc == 1 && *s3 == 2, 131 "psArrayAdd: return array with newly added data.");136 "psArrayAdd: return array with newly added data."); 132 137 psFree(temp); 133 138 } … … 141 146 *s2 = *((psS32*)(a->data[0])); 142 147 ok ( a->n == 3 && a->nalloc == 3 && *s2 == 2, 143 "psArrayAdd: return array with newly added data."); 144 } 148 "psArrayAdd: return array with newly added data."); 149 } 150 151 //Tests for psArrayRemove 145 152 //Setup array with 3 elements to test remove function 146 153 //Return false for attempting to remove from a NULL array … … 148 155 psArray *temp = NULL; 149 156 ok( !psArrayRemove(temp, s2), 150 "psArrayRemove: return false for NULL input psArray.");157 "psArrayRemove: return false for NULL input psArray."); 151 158 } 152 159 //Return true for successful removal 153 160 { 154 161 ok( psArrayRemove(a, s2) && a->n == 2, 155 "psArrayRemove: return true for successful removal."); 162 "psArrayRemove: return true for successful removal."); 163 } 164 165 //Tests for psArrayRemoveByPos 166 //Return false for NULL array input 167 { 168 ok( !psArrayRemoveByPos(NULL, 0), 169 "psArrayRemoveByPos: return false for NULL input psArray."); 170 } 171 //Return false for out-of-range index 172 { 173 ok( !psArrayRemoveByPos(a, 5), 174 "psArrayRemoveByPos: return false for out-of-range location."); 175 } 176 //Return true for successful removal 177 { 178 ok( psArrayRemoveByPos(a, 1) && a->n == 1, 179 "psArrayRemoveByPos: return true for successful removal."); 156 180 } 157 181 … … 179 203 *s3 = 3; 180 204 205 //Tests for psArraySet 181 206 //Return false for trying to set a NULL psArray 182 207 { 183 208 ok( !psArraySet(a, 0, (psPtr)s1), 184 "psArraySet: return false for NULL input psArray.");209 "psArraySet: return false for NULL input psArray."); 185 210 } 186 211 //Return false for trying to set an invalid position … … 188 213 { 189 214 ok( !psArraySet(a, 2, (psPtr)s1), 190 "psArraySet: return false for invalid input position.");215 "psArraySet: return false for invalid input position."); 191 216 } 192 217 //Return false for trying to set nalloc position … … 194 219 { 195 220 ok( !psArraySet(a, a->nalloc, (psPtr)s2), 196 "psArraySet: return false for out-of-range position.");221 "psArraySet: return false for out-of-range position."); 197 222 } 198 223 //Return false for an invalid position (-2 = out-of-range neg. index) 199 224 { 200 225 ok( !psArraySet(a, -2, (psPtr)s2), 201 "psArraySet: return false for out-of-range negative position.");226 "psArraySet: return false for out-of-range negative position."); 202 227 } 203 228 //Return true for set to a->n position (< nalloc) … … 205 230 { 206 231 ok( psArraySet(a, a->n, (psPtr)s2) && a->n == 2, 207 "psArraySet: return true for valid input position.");232 "psArraySet: return true for valid input position."); 208 233 } 209 234 //Return true for a negative index input … … 211 236 ok( psArraySet(a, -2, (psPtr)s3) && a->n == 2 && 212 237 *((psS32*)(a->data[0])) == 3, 213 "psArraySet: return true for valid negative input position."); 214 } 215 238 "psArraySet: return true for valid negative input position."); 239 } 240 241 //Tests for psArrayGet 216 242 //Return NULL for NULL array input 217 243 psS32 *s4 = NULL; … … 219 245 s4 = (psS32*)psArrayGet(b, 0); 220 246 ok( s4 == NULL, 221 "psArrayGet: return NULL for NULL input psArray.");247 "psArrayGet: return NULL for NULL input psArray."); 222 248 } 223 249 //Return NULL for an out-of-range index … … 225 251 s4 = (psS32*)psArrayGet(a, a->n); 226 252 ok( s4 == NULL, 227 "psArrayGet: return NULL for out-of-range position.");253 "psArrayGet: return NULL for out-of-range position."); 228 254 } 229 255 //Return NULL for an out-of-range negative index … … 231 257 s4 = (psS32*)psArrayGet(a, -1-a->n); 232 258 ok( s4 == NULL, 233 "psArrayGet: return NULL for out-of-range negative position.");259 "psArrayGet: return NULL for out-of-range negative position."); 234 260 } 235 261 //Return valid case … … 237 263 s4 = (psS32*)psArrayGet(a, 1); 238 264 ok( *s4 == 1, 239 "psArrayGet: return correct value for valid position.");265 "psArrayGet: return correct value for valid position."); 240 266 } 241 267 … … 268 294 psS32 *s6 = (psS32*)psAlloc(sizeof(psS32)); 269 295 296 //Tests for psArraySort 270 297 //Return NULL for attempt to sort NULL psArray input. 271 298 { … … 273 300 temp = psArraySort(temp, (psComparePtrFunc)psCompareDescendingS32Ptr); 274 301 ok( temp == NULL, 275 "psArraySort: return NULL for NULL input psArray.");302 "psArraySort: return NULL for NULL input psArray."); 276 303 } 277 304 //Return properly sorted psArray with descending psS32 elements - 3,2,1 … … 282 309 *s6 = *((psS32*)(a->data[2])); 283 310 ok( *s4 == 3 && *s5 == 2 && *s6 == 1, 284 "psArraySort: return properly sorted psArray.");311 "psArraySort: return properly sorted psArray."); 285 312 } 286 313 -
trunk/psLib/test/types/tap_psBitSet_all.c
r9082 r9143 39 39 psBitSet *bs = NULL; 40 40 41 //Return NULL for attempt to sort NULL psArray input.41 //Return NULL for attempt to Allocate BitSet of negative size. 42 42 { 43 43 noBits = psBitSetAlloc(-1); -
trunk/psLib/test/types/tap_psList_all.c
r9082 r9143 1 1 /** 2 * C Implementation: tap_ps Hash_all2 * C Implementation: tap_psList_all 3 3 * 4 * Description: Tests for psHashAlloc, psHashAdd, psMemCheckHash, psHashLookup, 5 * psHashRemove, psHashKeyList, psHashToArray 4 * Description: Tests for psListAlloc, psListAdd, psMemCheckList, psListAddAfter, 5 * psListAddBefore, psListRemove, psListRemoveData, psListGet, 6 * psListIteratorAlloc, psListIteratorSet, psListGetAndIncrement, 7 * psListGetAndDecrement, psListToArray, psArrayToList, psListSort, 8 * psListLength 6 9 * 7 10 * Author: dRob <David.Robbins@mhpcc.hpc.mil>, (C) 2006 … … 17 20 #include "pstap.h" 18 21 19 void test HashCreate(void);20 //void testHashManip(void);21 //void testHashConvert(void);22 void testListCreate(void); 23 void testListManip(void); 24 void testListConvertSort(void); 22 25 23 26 int main(void) 24 27 { 25 plan_tests( 25);26 27 diag("Tests for ps HashFunctions");28 29 test HashCreate();30 // testHashManip();31 // testHashConvert();28 plan_tests(60); 29 30 diag("Tests for psList Functions"); 31 32 testListCreate(); 33 testListManip(); 34 testListConvertSort(); 32 35 33 36 done(); 34 37 } 35 38 36 void test HashCreate(void)39 void testListCreate(void) 37 40 { 38 diag(" >>>Test 1: psHash Creation Fxns"); 39 41 diag(" >>>Test 1: psList Creation Fxns"); 42 psList *noList = NULL; 43 psListIterator *noIter = NULL; 44 psList *list = psListAlloc(NULL); 45 psMetadata *md = psMetadataAlloc(); 46 psListIterator *iter1 = NULL; 47 psListIterator *iter2 = NULL; 48 49 //Tests for psListAlloc & psMemCheckList 50 //Return empty list for NULL data input. 51 { 52 noList = psListAlloc(NULL); 53 ok( psListLength(noList) == 0 && psMemCheckList(noList), 54 "psListAlloc: return empty list for NULL data input."); 55 } 56 //Return allocated list for non-NULL data input. 57 psFree(noList); 58 { 59 60 noList = psListAlloc(md); 61 ok( psListLength(noList) == 1, 62 "psListAlloc: return correct list for non-NULL data input."); 63 } 64 //Make sure psMemCheckList works correctly - return false 65 { 66 int j = 2; 67 ok( !psMemCheckList(&j), 68 "psMemCheckList: return false for non-List input."); 69 } 70 71 //Tests for ListIteratorAlloc 72 //Return NULL for attempt to allocate iterator with NULL list input 73 { 74 noIter = psListIteratorAlloc(NULL, 0, true); 75 ok( noIter == NULL, 76 "psListIteratorAlloc: return false for NULL data input."); 77 } 78 //Attempt to Allocate a psListIterator with out-of-range location 79 { 80 iter1 = psListIteratorAlloc(noList, 10, false); 81 ok( iter1 == NULL, 82 "psListIteratorAlloc: return NULL for out-of-range location."); 83 } 84 //Return valid iterator for valid inputs 85 { 86 iter1 = psListIteratorAlloc(noList, 0, true); 87 ok( iter1 != NULL, 88 "psListIteratorAlloc: return valid iterator for valid inputs."); 89 } 90 91 //Tests For ListAdd Fxns 92 //Return false for NULL list input 93 { 94 ok( !psListAdd(NULL, 0, md), 95 "psListAdd: return false for NULL list input."); 96 } 97 //Return false for NULL data input 98 { 99 ok( !psListAdd(list, 0, NULL), 100 "psListAdd: return false for NULL data input."); 101 } 102 //Return false for list with NULL data 103 { 104 psFree(list->iterators->data[0]); 105 list->iterators->data[0] = NULL; 106 ok( !psListAdd(list, 0, md), 107 "psListAdd: return false for list with NULL iterators."); 108 psFree(list); 109 list = psListAlloc(md); 110 } 111 //Return true for valid inputs - tail location 112 { 113 ok( psListAdd(list, 2, md), 114 "psListAdd: return true for valid inputs - Tail Location."); 115 } 116 //Return true for valid inputs - head location 117 { 118 ok( psListAdd(list, 0, md), 119 "psListAdd: return true for valid inputs - head Location."); 120 } 121 122 //psListAddAfter Tests 123 //psListAddAfter - Return false for NULL data input 124 { 125 ok( !psListAddAfter(iter1, NULL), 126 "psListAddAfter: return false for NULL data input."); 127 } 128 //psListAddAfter - Return false for NULL iterator input 129 { 130 ok( !psListAddAfter(NULL, md), 131 "psListAddAfter: return false for NULL iterator input."); 132 } 133 //psListAddAfter - Return false for non-mutable iterator input 134 { 135 iter1->mutable = false; 136 ok( !psListAddAfter(iter1, md), 137 "psListAddAfter: return false for non-mutable iterator input."); 138 iter1->mutable = true; 139 psFree(iter1); 140 } 141 //psListAddAfter - Return false for iterator with NULL cursor 142 psList *newList = psListAlloc(md); 143 iter1 = psListIteratorAlloc(newList, 0, true); 144 psListElem *cursor = iter1->cursor; 145 { 146 iter1->cursor = NULL; 147 ok( !psListAddAfter(iter1, md), 148 "psListAddAfter: return false for iterator with headptr but no cursor."); 149 iter1->cursor = cursor; 150 } 151 //Set the iterator to a middle element, then add after 152 { 153 iter2 = psListIteratorAlloc(list, 1, true); 154 ok( psListAddAfter(iter2, md), 155 "psListAddAfter: return true for adding a list element to the middle."); 156 } 157 //Set the iterator to the head element, then add after a wrong index. return true 158 { 159 if (!psListIteratorSet(iter2, PS_LIST_HEAD) ) 160 printf("\nerror in set\n\n"); 161 ((psListIterator*)(iter2->list->iterators->data[0]))->index = 10; 162 ok( psListAddAfter(iter2, md), 163 "psListAddAfter: return true for adding a list element to the head."); 164 } 165 //Return true for adding to an empty list 166 psFree(noList); 167 noList = psListAlloc(NULL); 168 psListIterator *iter3 = psListIteratorAlloc(noList, 0, true); 169 { 170 ok( psListAddAfter(iter3, md), 171 "psListAddAfter: return true for adding to an empty list."); 172 } 173 174 //psListAddBefore Tests 175 //psListAddBefore - Return false for NULL data input 176 { 177 ok( !psListAddBefore(iter1, NULL), 178 "psListAddBefore: return false for NULL data input."); 179 } 180 //psListAddBefore - Return false for NULL iterator input 181 { 182 ok( !psListAddBefore(NULL, md), 183 "psListAddBefore: return false for NULL iterator input."); 184 } 185 //psListAddBefore - Return false for non-mutable iterator input 186 { 187 iter1->mutable = false; 188 ok( !psListAddBefore(iter1, md), 189 "psListAddBefore: return false for non-mutable iterator input."); 190 iter1->mutable = true; 191 } 192 { 193 cursor = iter1->cursor; 194 iter1->cursor = NULL; 195 ok( !psListAddBefore(iter1, md), 196 "psListAddBefore: return false for iterator with headptr but no cursor."); 197 iter1->cursor = cursor; 198 } 199 //Add before a middle list element 200 { 201 psListIteratorSet(iter2, -2); 202 ok( psListAddBefore(iter2, md), 203 "psListAddBefore: return true for adding a list element to the middle."); 204 } 205 //Set the iterator to the 2nd element, then add after a wrong index. return true 206 { 207 skip_start( !psListIteratorSet(iter2, 1), 1, 208 "Skipping 1 tests because psListIteratorSet failed"); 209 ((psListIterator*)(iter2->list->iterators->data[0]))->index = 10; 210 ok( psListAddBefore(iter2, md), 211 "psListAddBefore: return true for adding a list element to the head."); 212 skip_end(); 213 } 214 //Return true for adding to an empty list 215 { 216 psFree(noList); 217 noList = psListAlloc(NULL); 218 iter3 = psListIteratorAlloc(noList, 0, true); 219 psFree(iter3); 220 ok( psListAddBefore(iter3, md), 221 "psListAddBefore: return true for adding to an empty list."); 222 } 223 224 //Check the length of a NULL list 225 { 226 psList *emptyList = NULL; 227 ok( psListLength(emptyList) == -1, 228 "psListLength: return -1 for NULL input psList."); 229 } 40 230 41 231 //Check for Memory leaks 42 232 { 233 psFree(iter2); 234 psFree(list); 235 psFree(iter1); 236 psFree(newList); 237 psFree(md); 238 psFree(noList); 43 239 checkMem(); 44 240 } 45 241 } 46 242 47 /* 48 //Return NULL for attempt to sort NULL psArray input. 243 void testListManip(void) 49 244 { 50 psArray *temp = NULL; 51 temp = psArraySort(temp, (psComparePtrFunc)psCompareDescendingS32Ptr); 52 ok( temp == NULL, 53 "psArraySort: return NULL for NULL input psArray."); 245 diag(" >>>Test 2: psList Manipulation Fxns"); 246 psMetadata *md = psMetadataAlloc(); 247 psList *emptyList = psListAlloc(NULL); 248 psList *list = psListAlloc(md); 249 psSphere *sphere = psSphereAlloc(); 250 psCube *cube = psCubeAlloc(); 251 psArray *array = psArrayAlloc(0); 252 psListAdd(list, PS_LIST_TAIL, sphere); 253 psListAdd(list, PS_LIST_TAIL, cube); 254 psListAdd(list, PS_LIST_TAIL, array); 255 psListIterator *emptyIter = psListIteratorAlloc(emptyList, 0, true); 256 psListIterator *iter1 = psListIteratorAlloc(list, PS_LIST_TAIL, true); 257 258 //Tests for psListGet 259 //Return NULL for NULL list input 260 { 261 psMetadata *out = NULL; 262 out = (psMetadata*)psListGet(NULL, PS_LIST_HEAD); 263 ok( out == NULL, 264 "psListGet: return NULL for NULL list input."); 265 } 266 //Return NULL for empty list 267 { 268 psMetadata *out = NULL; 269 out = (psMetadata*)psListGet(emptyList, PS_LIST_HEAD); 270 ok( out == NULL, 271 "psListGet: return NULL for empty list."); 272 } 273 //Return NULL for out-of-range location 274 { 275 psMetadata *out = NULL; 276 out = (psMetadata*)psListGet(list, -10); 277 ok( out == NULL, 278 "psListGet: return NULL for out-of-range location."); 279 } 280 //Return correct head item for valid inputs 281 { 282 psMetadata *out = NULL; 283 out = (psMetadata*)psListGet(list, PS_LIST_HEAD); 284 ok( out != NULL && psMemCheckMetadata(out), 285 "psListGet: return correct head item for valid inputs."); 286 } 287 288 //Tests for psListGetAndIncrement 289 //Return NULL for NULL iterator input 290 { 291 psMetadata *out = NULL; 292 out = (psMetadata*)psListGetAndIncrement(NULL); 293 ok( out == NULL, 294 "psListGetAndIncrement: return NULL for NULL iterator input."); 295 } 296 //Return NULL for empty iterator with offend = false 297 { 298 psMetadata *out = NULL; 299 out = (psMetadata*)psListGetAndIncrement(emptyIter); 300 ok( out == NULL, 301 "psListGetAndIncrement: return NULL for empty iterator input."); 302 } 303 //Return NULL for empty iterator with offend = true 304 { 305 emptyIter->offEnd = true; 306 psMetadata *out = NULL; 307 out = (psMetadata*)psListGetAndIncrement(emptyIter); 308 ok( out == NULL, 309 "psListGetAndIncrement: return NULL for empty iterator input."); 310 emptyIter->offEnd = false; 311 } 312 //Return correct tail item for valid inputs 313 { 314 psArray *out = NULL; 315 out = (psArray*)psListGetAndIncrement(iter1); 316 ok( out != NULL && psMemCheckArray(out), 317 "psListGetAndIncrement: return correct tail item for valid inputs."); 318 } 319 320 //Tests for psListGetAndDecrement 321 //Return NULL for NULL iterator input 322 { 323 psMetadata *out = NULL; 324 out = (psMetadata*)psListGetAndDecrement(NULL); 325 ok( out == NULL, 326 "psListGetAndDecrement: return NULL for NULL iterator input."); 327 } 328 //Return NULL for empty iterator with offend = false 329 { 330 psMetadata *out = NULL; 331 out = (psMetadata*)psListGetAndDecrement(emptyIter); 332 ok( out == NULL, 333 "psListGetAndDecrement: return NULL for empty iterator input."); 334 } 335 //Return NULL for empty iterator with offend = true 336 { 337 emptyIter->offEnd = true; 338 psMetadata *out = NULL; 339 out = (psMetadata*)psListGetAndDecrement(emptyIter); 340 ok( out == NULL, 341 "psListGetAndDecrement: return NULL for empty iterator input."); 342 emptyIter->offEnd = false; 343 } 344 //Return correct tail item for valid inputs 345 { 346 psArray *out = NULL; 347 skip_start( !psListIteratorSet(iter1, PS_LIST_TAIL), 1, 348 "Skipping 1 tests because psListIteratorSet failed"); 349 out = (psArray*)psListGetAndDecrement(iter1); 350 ok( out != NULL && psMemCheckArray(out), 351 "psListGetAndDecrement: return correct tail item for valid inputs."); 352 skip_end(); 353 } 354 355 //Tests for psListRemove 356 //Return false for NULL list input 357 { 358 ok( !psListRemove(NULL, PS_LIST_HEAD), 359 "psListRemove: return false for NULL list input."); 360 } 361 //Return false for invalid location 362 { 363 ok( !psListRemove(list, -10), 364 "psListRemove: return false for invalid location."); 365 } 366 //Return false for empty list 367 { 368 ok( !psListRemove(emptyList, PS_LIST_HEAD), 369 "psListRemove: return false for remove from empty list."); 370 } 371 //Return true for remove from middle of list 372 { 373 ok( psListRemove(list, 2) && list->n == 3, 374 "psListRemove: return true for remove from middle of list."); 375 } 376 //Return true for remove from head of list 377 { 378 ok( psListRemove(list, PS_LIST_HEAD) && list->n ==2, 379 "psListRemove: return true for remove from head of list."); 380 } 381 //Return true for remove from tail of list 382 { 383 ok( psListRemove(list, PS_LIST_TAIL) && list->n == 1, 384 "psListRemove: return true for remove from tail of list."); 385 } 386 //Tests for psListRemoveData 387 //Return false for NULL list input 388 { 389 ok( !psListRemoveData(NULL, md), 390 "psListRemoveData: return false for NULL list input."); 391 } 392 //Return false for NULL data input 393 { 394 ok( !psListRemoveData(list, NULL), 395 "psListRemoveData: return false for NULL data input."); 396 } 397 //Return false for non-matching data 398 { 399 ok( !psListRemoveData(list, md), 400 "psListRemoveData: return false for non-matching data."); 401 } 402 //Return false for trying to remove from an empty list 403 { 404 ok( !psListRemoveData(emptyList, md), 405 "psListRemoveData: return false for trying to remove from an empty list."); 406 } 407 //Return true for remove of valid data 408 psListAdd(list, PS_LIST_HEAD, cube); 409 psListAdd(list, PS_LIST_HEAD, array); 410 { 411 ok( psListRemoveData(list, sphere), 412 "psListRemoveData: return true for remove of valid data."); 413 } 414 415 //Check for Memory leaks 416 { 417 psFree(md); 418 psFree(emptyList); 419 psFree(list); 420 psFree(sphere); 421 psFree(cube); 422 psFree(array); 423 checkMem(); 424 } 54 425 } 55 //Attempt to reallocate the psArray - smaller 426 427 void testListConvertSort(void) 56 428 { 57 psS32 *s32 = (psS32*)psAlloc(sizeof(psS32)); 58 *s32 = 1; 59 psS32 *s32_2 = (psS32*)psAlloc(sizeof(psS32)); 60 *s32_2 = 2; 61 skip_start( !psArraySet(a, 0, s32) || !psArraySet(a, 1, s32), 1, 62 "Skipping 1 tests because psArraySet failed"); 63 a = psArrayRealloc(a, 1); 64 *s32_2 = *((psS32*)(a->data[0])); 65 ok( a->n == 1 && a->nalloc == 1 && *s32_2 == 1, 66 "psArrayRealloc: return properly reallocated psArray."); 67 skip_end(); 68 psFree(s32); 69 psFree(s32_2); 429 diag(" >>>Test 3: psList Conversion and Sorting Fxns"); 430 psList *emptyList = psListAlloc(NULL); 431 psS32 *s1 = (psS32*)psAlloc(sizeof(psS32)); 432 *s1 = 2; 433 psS32 *s2 = (psS32*)psAlloc(sizeof(psS32)); 434 *s2 = 3; 435 psS32 *s3 = (psS32*)psAlloc(sizeof(psS32)); 436 *s3 = 1; 437 psList *list = psListAlloc(s1); 438 psListAdd(list, PS_LIST_TAIL, s2); 439 psListAdd(list, PS_LIST_TAIL, s3); 440 psArray *array = NULL; 441 psArray *emptyArray = psArrayAlloc(0); 442 psList *out = NULL; 443 444 //Tests for psListToArray 445 //Return NULL for NULL list input 446 { 447 array = psListToArray(NULL); 448 ok( array == NULL, 449 "psListToArray: return NULL for NULL list input."); 450 } 451 //Return empty array for empty list input 452 { 453 array = psListToArray(emptyList); 454 ok( array->n == 0 && psMemCheckArray(array), 455 "psListToArray: return empty array for empty list input."); 456 psFree(array); 457 array = NULL; 458 } 459 //Return correct array for valid list input 460 { 461 array = psListToArray(list); 462 ok( array->n == 3 && *((psS32*)(array->data[0])) == 2, 463 "psListToArray: return correct array for valid list input."); 464 } 465 466 //Tests for psArrayToList 467 //Return NULL for NULL array input 468 { 469 out = psArrayToList(NULL); 470 ok( out == NULL, 471 "psArrayToList: return NULL for NULL array input."); 472 } 473 //Return empty list for empty array input 474 { 475 out = psArrayToList(emptyArray); 476 ok( out->n == 0 && psMemCheckList(out), 477 "psArrayToList: return empty list for empty array input."); 478 psFree(out); 479 out = NULL; 480 } 481 //Return correct list for valid array input 482 { 483 out = psArrayToList(array); 484 ok( out->n == 3 && *((psS32*)psListGet(out, PS_LIST_HEAD)) == 2, 485 "psArrayToList: return correct list for valid array input."); 486 } 487 488 //Tests for psListSort 489 //Return NULL for NULL list input 490 { 491 psList *none = NULL; 492 none = psListSort(none, (psComparePtrFunc)psCompareDescendingS32Ptr); 493 ok( none == NULL, 494 "psListSort: return NULL for NULL list input."); 495 } 496 //Return empty list for empty list input 497 { 498 emptyList = psListSort(emptyList, (psComparePtrFunc)psCompareDescendingS32Ptr); 499 ok( emptyList != NULL, 500 "psListSort: return empty list for empty list input."); 501 } 502 //Return properly sorted list for valid inputs 503 { 504 list = psListSort(list, (psComparePtrFunc)psCompareS32Ptr); 505 ok( *((psS32*)psListGet(list, 0)) == 1 && *((psS32*)psListGet(list, 1)) == 2, 506 "psListSort: return properly sorted list for valid inputs."); 507 } 508 //Return unchanged list for NULL psComparePtrFunc 509 { 510 psList *tempList = NULL; 511 tempList = psListSort(list, NULL); 512 ok( tempList == list, 513 "psListSort: return unchanged list for NULL psComparePtrFunc."); 514 } 515 516 517 //Check for Memory leaks 518 { 519 psFree(array); 520 psFree(out); 521 psFree(emptyArray); 522 psFree(emptyList); 523 psFree(list); 524 psFree(s1); 525 psFree(s2); 526 psFree(s3); 527 checkMem(); 528 } 529 70 530 } 71 //Make sure psMemCheckHash works correctly - return false72 {73 int j = 2;74 ok( !psMemCheckHash(&j),75 "psMemCheckHash: return false for non-Hash input.");76 }77 //Allocate a hashBucket by inserting a psHash entry - return true78 psMetadataItem *itemBool = psMetadataItemAllocBool("itemBool", "", true);79 */80
Note:
See TracChangeset
for help on using the changeset viewer.
