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