void doListOperations() { UtlSList testList; // fill the list appendCountItems(testList, NUM_PERFORMANCE_STRINGS); // take the first half off the front if (!testList.isEmpty()) { getCountItems(testList, NUM_PERFORMANCE_STRINGS / 2); } // take the rest off the end by reference if (!testList.isEmpty()) { UtlContainable* lastItem = testList.last(); delete dynamic_cast<UtlString*>(testList.removeReference(lastItem)); } // fill the list appendCountItems(testList, NUM_PERFORMANCE_STRINGS); // search the list for each item by value UtlString target; int targetIndex; for (targetIndex = 0; targetIndex < NUM_PERFORMANCE_STRINGS; targetIndex += 1) { target = string[targetIndex]; UtlString* found = dynamic_cast<UtlString*>(testList.find(&target)); if (found) { externalForSideEffects = found->length(); } } // get the object in the middle of the list by index, and remove it by value while(!testList.isEmpty()) { int numberLeft = testList.entries(); UtlString* middle = dynamic_cast<UtlString*>(testList.at((numberLeft / 2))); delete dynamic_cast<UtlString*>(testList.remove(middle)); } // fill the list appendCountItems(testList, NUM_PERFORMANCE_STRINGS); // iterate over each item in the list UtlSListIterator iterate(testList); UtlString* item; while ((item = dynamic_cast<UtlString*>(iterate()))) { externalForSideEffects = item->length(); delete item; } }
void utlTestRemove(RemoveType type) { int testCount = 5 ; const char* prefix = ""; if (type == TEST_REMOVE) { prefix = "test the remove(UtlContainable* c) method where c" ; } else if (type == TEST_REMOVE_REF) { prefix = "test the removeReference(UtlContainable* c) where c" ; } const char* Msgs[] = { \ "is the first entry's reference ", \ "is the last entry' reference ", \ "is the mid entry's value(not reference) ", \ "is the first of multiple matches and is the value match ", \ "has no match at all " \ } ; const char* suffix1 = " :- Verify returned value" ; const char* suffix2 = " :- Verify total entries" ; commonList.insertAt(2, commonContainables_Clone[4]) ; UtlString notExistCollectable("This cannot and willnot exist"); UtlContainable* itemToRemove[] = { \ commonContainables[0], commonContainables[commonEntriesCount -1 ], \ commonContainables_Clone[2], commonContainables[4], \ ¬ExistCollectable \ } ; int totalEnt = commonEntriesCount + 1; UtlContainable* expectedValue[] = { \ commonContainables[0], commonContainables[commonEntriesCount -1 ], \ commonContainables[2], commonContainables_Clone[4], \ NULL \ }; int entriesValue[] = { --totalEnt, --totalEnt, --totalEnt, --totalEnt, totalEnt } ; totalEnt = commonEntriesCount + 1; UtlContainable* expectedRef[] = { \ commonContainables[0], commonContainables[commonEntriesCount -1 ], \ NULL, commonContainables[4], \ NULL \ }; int entriesRef[] = { --totalEnt, --totalEnt, totalEnt, --totalEnt, totalEnt } ; for (int i = 0 ; i < testCount ; i++) { string msg ; if (type == TEST_REMOVE) { TestUtilities::createMessage(3, &msg, prefix, Msgs[i], suffix1) ; UtlContainable* retValue = commonList.remove(itemToRemove[i]) ; CPPUNIT_ASSERT_EQUAL_MESSAGE(msg.data(), expectedValue[i], retValue) ; TestUtilities::createMessage(3, &msg, prefix, Msgs[i], suffix2) ; CPPUNIT_ASSERT_EQUAL_MESSAGE(msg.data(), entriesValue[i], (int)commonList.entries()) ; } else if (type == TEST_REMOVE_REF) { UtlContainable* uRemoved = commonList.removeReference(itemToRemove[i]) ; TestUtilities::createMessage(3, &msg, prefix, Msgs[i], suffix2) ; CPPUNIT_ASSERT_EQUAL_MESSAGE(msg.data(), expectedRef[i], uRemoved) ; TestUtilities::createMessage(3, &msg, prefix, Msgs[i], suffix2) ; CPPUNIT_ASSERT_EQUAL_MESSAGE(msg.data(), entriesRef[i], (int)commonList.entries()) ; } } } //utlRemove