void TestInsertBefore() { DoubleLinkedList<int> clist; std::cout << "\n********** Testing: DoubleLinkedList InsertBefore **********" << std::endl; std::cout << "\n********** Testing: InsertBefore with Empty List **********" << std::endl; try { //Note: Here is the function signature so you can determine the order of parameters //void DoubleLinkedList<T>::InsertBefore(const T & new_data, const T & existing_data) clist.InsertBefore(-1, 0); } catch(const char * msg) { std::cout << msg << std::endl; } std::cout << "\n********** Testing: InsertBefore head with only one node **********" << std::endl; clist.Append(0); clist.InsertBefore(-1, 0); std::cout << clist.First() << std::endl; std::cout << clist.Last() << std::endl; std::cout << "\n********** Testing: InsertBefore head with multiple nodes **********" << std::endl; clist.InsertBefore(-3, -1); std::cout << clist.First() << std::endl; std::cout << clist.Last() << std::endl; std::cout << "\n********** Testing: InsertBefore a node in the middle of the list **********" << std::endl; clist.InsertBefore(-2, -1); std::cout << clist.First() << std::endl; std::cout << clist.Last() << std::endl; std::cout << "\n********** Testing: InsertBefore but existing_data doesn't exist **********" << std::endl; try { clist.InsertBefore(-2, 99); } catch (const char * msg) { std::cout << msg << std::endl; } }
void TestInsertBefore() { DoubleLinkedList<int> clist; std::cout << "\n********** InsertBefore **********" << std::endl; // Empty List try { clist.InsertBefore(-1, 0); } catch (char * msg) { std::cout << msg << std::endl; } // Head and Tail are the same clist.Append(0); clist.InsertBefore(-1, 0); std::cout << clist.First() << std::endl; std::cout << clist.Last() << std::endl; // Before Head clist.InsertBefore(-3, -1); std::cout << clist.First() << std::endl; std::cout << clist.Last() << std::endl; // Middle clist.InsertBefore(-2, -1); std::cout << clist.First() << std::endl; std::cout << clist.Last() << std::endl; // Node doesn't exist try { clist.InsertBefore(-2, 99); } catch (char * msg) { std::cout << msg << std::endl; } }