int main(void) { const std::string saveFileName = "ShoppingListData.txt"; ShoppingList theList; Output::PrintLanding(); if (theList.loadFromFile(saveFileName) != SL_SUCCESS) { std::cout << "Unable to open file '" << saveFileName << "'." << std::endl; return 1; } std::cout << std::endl << theList.getItemCount() << " records have been loaded from '" << saveFileName << "'." << std::endl; main_loop(theList); if (theList.writeToFile(saveFileName) != SL_SUCCESS) { std::cout << "Unable to write to '" << saveFileName << "'." << std::endl; return 1; } std::cout << "Wrote " << theList.getItemCount() << " items to '" << saveFileName << "'." << std::endl; std::cout << std::endl; //for demo purposes only system("PAUSE"); return 0; }
void unittest () { cout << "\nSTARTING UNIT TEST\n\n"; ShoppingList* myList = new ShoppingList; cout << "* DEFAULT CONSTRUCTOR *\n\n"; try { btassert<bool>(myList->getMaxItems() == 25); cout << "Passed TEST 1: ShoppingList::getMaxItems () \n"; } catch (bool b) { cout << "# FAILED TEST 1: ShoppingList::getMaxItems () #\n"; } try { btassert<bool>(myList->getItemCount() == 0); cout << "Passed TEST 2: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 2: ShoppingList::getItemCount () #\n"; } try { myList->getItem(0); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 3: ShoppingList::getItem(0) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 3: ShoppingList::getItem(0) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 3: ShoppingList::getItem(0) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList->addItem("apples") == true); cout << "Passed TEST 4: ShoppingList::addItem(\"apples\") \n"; } catch (bool b) { cout << "# FAILED TEST 4: ShoppingList::addItem(\"apples\") #\n"; } try { btassert<bool>(myList->getItemCount() == 1); cout << "Passed TEST 5: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 5: ShoppingList::getItemCount () #\n"; } try { btassert<bool>(myList->getItem(0) == "apples"); cout << "Passed TEST 6: ShoppingList::getItem(0) \n"; } catch (bool b) { cout << "# FAILED TEST 6: ShoppingList::getItem(0) #\n"; } myList->getItem(0) = "oranges"; try { btassert<bool>(myList->getItem(0) == "oranges"); cout << "Passed TEST 7: string& ShoppingList::getItem(0) \n"; } catch (bool b) { cout << "# FAILED TEST 7: string& ShoppingList::getItem(0) #\n"; } try { btassert<bool>(myList->removeItem(0) == "oranges"); cout << "Passed TEST 8: ShoppingList::removeItem(0) \n"; } catch (bool b) { cout << "# FAILED TEST 8: ShoppingList::removeItem(0) #\n"; } try { btassert<bool>(myList->getItemCount() == 0); cout << "Passed TEST 9: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 9: ShoppingList::getItemCount () #\n"; } for (unsigned int i=0; i<myList->getMaxItems(); i++) myList->addItem("grapes"); try { btassert<bool>(myList->getItemCount() == 25); cout << "Passed TEST 10: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 10: ShoppingList::getItemCount () #\n"; } try { myList->getItem(26); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 11: ShoppingList::getItem(11) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 11: ShoppingList::setItem(11) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 11: ShoppingList::setItem(11) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList->addItem("bananas") == false); cout << "Passed TEST 12: ShoppingList::addItem(\"bananas\") \n"; } catch (bool b) { cout << "# FAILED TEST 12: ShoppingList::getItem(\"bananas\") #\n"; } unsigned int itemsToRemove = myList->getItemCount(); for (unsigned int i=0; i<itemsToRemove; i++) myList->removeItem(0); try { btassert<bool>(myList->getItemCount() == 0); cout << "Passed TEST 13: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 13: ShoppingList::getItemCount () #\n"; } try { myList->getItem(0) = "oranges"; btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 14: string& ShoppingList::getItem(0) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 14: string& ShoppingList::setItem(0) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 14: string& ShoppingList::setItem(0) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList->getMaxItems() == 25); cout << "Passed TEST 15: ShoppingList::getMaxItems () \n"; } catch (bool b) { cout << "# FAILED TEST 15: ShoppingList::getMaxItems () #\n"; } delete myList; myList = new ShoppingList(1); cout << "\n* OVERLOADED CONSTRUCTOR *\n\n"; try { btassert<bool>(myList->getMaxItems() == 1); cout << "Passed TEST 16: ShoppingList::getMaxItems () \n"; } catch (bool b) { cout << "# FAILED TEST 16: ShoppingList::getMaxItems () #\n"; } try { btassert<bool>(myList->addItem("apples") == true); cout << "Passed TEST 17: ShoppingList::addItem(\"apples\") \n"; } catch (bool b) { cout << "# FAILED TEST 17: ShoppingList::addItem(\"apples\") #\n"; } try { btassert<bool>(myList->getItem(0) == "apples"); cout << "Passed TEST 18: ShoppingList::getItem(0) \n"; } catch (bool b) { cout << "# FAILED TEST 18: ShoppingList::getItem(0) #\n"; } try { myList->removeItem(1); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 19: ShoppingList::removeItem(1) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 19: ShoppingList::removeItem(1) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 19: ShoppingList::removeItem(1) EXCEPTION HANDLING #\n"; } try { myList->getItem(1); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 20: ShoppingList::getItem(1) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 20: ShoppingList::getItem(1) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 20: ShoppingList::getItem(1) EXCEPTION HANDLING #\n"; } cout << "\n* RESET FUNCTION *\n\n"; try { myList->reset(0); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY SIZE"); cout << "Passed TEST 21: ShoppingList::reset(0) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 21: ShoppingList::reset(0) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 21: ShoppingList::reset(0) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList->getMaxItems() == 1); cout << "Passed TEST 22: ShoppingList::getMaxItems () \n"; } catch (bool b) { cout << "# FAILED TEST 22: ShoppingList::getMaxItems () #\n"; } myList->reset(5); try { btassert<bool>(myList->getMaxItems() == 5); cout << "Passed TEST 23: ShoppingList::getMaxItems () \n"; } catch (bool b) { cout << "# FAILED TEST 23: ShoppingList::getMaxItems () #\n"; } try { btassert<bool>(myList->getItemCount() == 0); cout << "Passed TEST 24: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 24: ShoppingList::getItemCount () #\n"; } for (unsigned int i=0; i<myList->getMaxItems(); i++) myList->addItem("grapes"); try { btassert<bool>(myList->getItemCount() == 5); cout << "Passed TEST 25: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 25: ShoppingList::getItemCount () #\n"; } try { myList->getItem(6); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 26: ShoppingList::getItem(6) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 26: ShoppingList::setItem(6) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 26: ShoppingList::setItem(6) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList->addItem("bananas") == false); cout << "Passed TEST 27: ShoppingList::addItem(\"bananas\") \n"; } catch (bool b) { cout << "# FAILED TEST 27: ShoppingList::getItem(\"bananas\") #\n"; } itemsToRemove = myList->getItemCount(); for (unsigned int i=0; i<itemsToRemove; i++) myList->removeItem(0); try { btassert<bool>(myList->getItemCount() == 0); cout << "Passed TEST 28: ShoppingList::getItemCount () \n"; } catch (bool b) { cout << "# FAILED TEST 28: ShoppingList::getItemCount () #\n"; } try { myList->getItem(0) = "oranges"; btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 29: string& ShoppingList::getItem(0) EXCEPTION HANDLING \n"; } catch (bool b) { cout << "# FAILED TEST 29: string& ShoppingList::setItem(0) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 29: string& ShoppingList::setItem(0) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList->getMaxItems() == 5); cout << "Passed TEST 30: ShoppingList::getMaxItems () \n"; } catch (bool b) { cout << "# FAILED TEST 30: ShoppingList::getMaxItems () #\n"; } cout << "\nUNIT TEST COMPLETE\n\n"; }
void unittest () { unsigned short utCount = 15; unsigned short utPassed = 0; cout << "\nSTARTING UNIT TEST\n\n"; ShoppingList myList; try { btassert<bool>(myList.getMaxItems() == 10); cout << "Passed TEST 1: ShoppingList::getMaxItems () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 1: ShoppingList::getMaxItems () #\n"; } try { btassert<bool>(myList.getItemCount() == 0); cout << "Passed TEST 2: ShoppingList::getItemCount () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 2: ShoppingList::getItemCount () #\n"; } try { myList.getItem(0); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 3: ShoppingList::getItem(0) EXCEPTION HANDLING \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 3: ShoppingList::getItem(0) EXCEPTION HANDLING #\n"; } } catch(bool b) { cout << "# FAILED TEST 3: ShoppingList::getItem(0) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList.addItem("apples") == true); cout << "Passed TEST 4: ShoppingList::addItem(\"apples\") \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 4: ShoppingList::addItem(\"apples\") #\n"; } try { btassert<bool>(myList.getItemCount() == 1); cout << "Passed TEST 5: ShoppingList::getItemCount () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 5: ShoppingList::getItemCount () #\n"; } try { btassert<bool>(myList.getItem(0) == "apples"); cout << "Passed TEST 6: ShoppingList::getItem(0) \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 6: ShoppingList::getItem(0) #\n"; } myList.getItem(0) = "oranges"; try { btassert<bool>(myList.getItem(0) == "oranges"); cout << "Passed TEST 7: string& ShoppingList::getItem(0) \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 7: string& ShoppingList::getItem(0) #\n"; } try { btassert<bool>(myList.removeItem(0) == "oranges"); cout << "Passed TEST 8: ShoppingList::removeItem(0) \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 8: ShoppingList::removeItem(0) #\n"; } try { btassert<bool>(myList.getItemCount() == 0); cout << "Passed TEST 9: ShoppingList::getItemCount () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 9: ShoppingList::getItemCount () #\n"; } for (unsigned int i=0; i<myList.getMaxItems(); i++) myList.addItem("grapes"); try { btassert<bool>(myList.getItemCount() == 10); cout << "Passed TEST 10: ShoppingList::getItemCount () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 10: ShoppingList::getItemCount () #\n"; } try { myList.getItem(11); btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 11: ShoppingList::getItem(11) EXCEPTION HANDLING \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 11: ShoppingList::setItem(11) EXCEPTION HANDLING #\n"; } } catch (bool b) { cout << "# FAILED TEST 11: ShoppingList::setItem(11) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList.addItem("bananas") == false); cout << "Passed TEST 12: ShoppingList::addItem(\"bananas\") \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 12: ShoppingList::getItem(\"bananas\") #\n"; } unsigned int itemsToRemove = myList.getItemCount(); for (unsigned int i=0; i<itemsToRemove; i++) myList.removeItem(0); try { btassert<bool>(myList.getItemCount() == 0); cout << "Passed TEST 13: ShoppingList::getItemCount () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 13: ShoppingList::getItemCount () #\n"; } try { myList.getItem(0) = "oranges"; btassert<bool>(false); } catch (ArrayException e) { try { btassert<bool>(e.message == "INVALID ARRAY INDEX"); cout << "Passed TEST 14: string& ShoppingList::getItem(0) EXCEPTION HANDLING \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 14: string& ShoppingList::setItem(0) EXCEPTION HANDLING #\n"; } } catch (bool b) { cout << "# FAILED TEST 14: string& ShoppingList::setItem(0) EXCEPTION HANDLING #\n"; } try { btassert<bool>(myList.getMaxItems() == 10); cout << "Passed TEST 15: ShoppingList::getMaxItems () \n"; ++utPassed; } catch (bool b) { cout << "# FAILED TEST 15: ShoppingList::getMaxItems () #\n"; } cout << "\nUNIT TEST COMPLETE\n\n"; cout << "PASSED " << utPassed << " OF " << utCount << " UNIT TEST"; if (utCount > 1) { cout << "S"; } cout << "\n\n"; }