def test_insert(self): """ Tests the insert(index, data) method """ dll = DoublyLinkedList() # test out of bounds self.assertIsNone(dll.insert(-1, 'data')) self.assertIsNone(dll.insert(1, 'data')) # test inserting at index zero in open list (should use unshift(data)) dll.insert(0, 'node zero') self.assertEqual(dll.length, 1) self.assertEqual(dll.head.data, 'node zero') dll.clear() dll.push(0) # index 0 dll.push(1) # index 1 dll.push(2) # index 2 # insert at index 1 expected_list = [0, 'insert one', 1, 2] self.assertIsInstance(dll.insert(1, 'insert one'), DoublyLinkedList) self.assertEqual(dll.length, 4) self.assertEqual(dll.to_list(), expected_list) # insert at tail, index 4 expected_list = [0, 'insert one', 1, 2, 'insert tail'] self.assertIsInstance(dll.insert(4, 'insert tail'), DoublyLinkedList) self.assertEqual(dll.length, 5) self.assertEqual(dll.to_list(), expected_list)
def test_clear(self): """ Tests the clear() method """ dll = DoublyLinkedList() dll.push('node one') dll.push('node two') dll.push('node three') self.assertEqual(dll.length, 3) self.assertIsInstance(dll.clear(), DoublyLinkedList) self.assertEqual(dll.length, 0) self.assertIsNone(dll.head) self.assertIsNone(dll.tail)