class TestLinkedListInsertMethods(unittest.TestCase): def setUp(self): # empty list testing empty inserts self.emptylinkedlist = LinkedListCursor() # populated list for testing populated inserts self.poplinkedlist = LinkedListCursor(range(0, 10)) def testInsertAtHeadEmpty(self): self.emptylinkedlist.insertAtHead(1) self.assertEqual(self.emptylinkedlist.head.item, 1) self.assertEqual(len(self.emptylinkedlist), 1) def testInsertAtHeadPopulated(self): self.poplinkedlist.insertAtHead(-1) self.assertEqual(self.poplinkedlist.head.item, -1) self.assertEqual(self.poplinkedlist.head.link.item, 0) self.assertEqual(len(self.poplinkedlist), 11) def testInsertAfterCursorEmpty(self): self.assertRaises(IndexError, self.emptylinkedlist.insertAfterCursor, 0) self.assertEqual(len(self.emptylinkedlist), 0) def testInsertAfterCursorPopulated(self): self.poplinkedlist.insertAfterCursor(1.5) self.assertEqual(self.poplinkedlist.cursor.link.item, 1.5) self.assertEqual(len(self.poplinkedlist), 11) def testInsertBeforeCursorEmpty(self): self.assertRaises(IndexError, self.emptylinkedlist.insertBeforeCursor, 0) self.assertEqual(len(self.emptylinkedlist), 0) def testInsertBeforeCursorPopulated(self): self.poplinkedlist.insertBeforeCursor(.5) self.assertEqual(self.poplinkedlist.head.link.item, .5) self.assertEqual(len(self.poplinkedlist), 11) def testInsertAtTailEmpty(self): self.emptylinkedlist.insertAtTail(1) self.assertEqual(self.emptylinkedlist.head.item, 1) self.assertEqual(len(self.emptylinkedlist), 1) # test that it sets the cursor self.emptylinkedlist.insertAtTail(2) self.assertEqual(self.emptylinkedlist.cursor.item, 2) self.assertEqual(len(self.emptylinkedlist), 2) # then finally test it sets the tail self.emptylinkedlist.insertAtTail(3) self.assertEqual(self.emptylinkedlist.tail.item, 3) self.assertEqual(len(self.emptylinkedlist), 3) def testInsertAtTailPopulated(self): self.poplinkedlist.insertAtTail(10) self.assertEqual(self.poplinkedlist.tail.item, 10) self.assertEqual(len(self.poplinkedlist), 11)