class TestLinkedlist(unittest.TestCase): # setUp() def setUp(self): self.ll = Linkedlist() # tearDown() def tearDown(self): self.ll.clear() # Test add() def test_add_one_node(self): self.ll.add('car') self.assertEqual(self.ll.size, 1) self.assertEqual(self.ll.head.data, 'car') self.assertEqual(self.ll.head.next, None) self.assertEqual(self.ll.tail.data, 'car') self.assertEqual(self.ll.tail.next, None) def test_add_two_node(self): self.ll.add('car') self.assertEqual(self.ll.size, 1) self.assertEqual(self.ll.head.data, 'car') self.assertEqual(self.ll.head.next, None) self.assertEqual(self.ll.tail.data, 'car') self.assertEqual(self.ll.tail.next, None) self.ll.add('bus') self.assertEqual(self.ll.size, 2) self.assertEqual(self.ll.head.data, 'car') self.assertEqual(self.ll.head.next.data, 'bus') self.assertEqual(self.ll.tail.data, 'bus') self.assertEqual(self.ll.tail.next, None) def test_add_three_node(self): self.ll.add('car') self.assertEqual(self.ll.size, 1) self.assertEqual(self.ll.head.data, 'car') self.assertEqual(self.ll.head.next, None) self.assertEqual(self.ll.tail.data, 'car') self.assertEqual(self.ll.tail.next, None) self.ll.add('bus') self.assertEqual(self.ll.size, 2) self.assertEqual(self.ll.head.data, 'car') self.assertEqual(self.ll.head.next.data, 'bus') self.assertEqual(self.ll.tail.data, 'bus') self.assertEqual(self.ll.tail.next, None) self.ll.add('truck') self.assertEqual(self.ll.size, 3) self.assertEqual(self.ll.head.data, 'car') self.assertEqual(self.ll.head.next.data, 'bus') self.assertEqual(self.ll.tail.data, 'truck') self.assertEqual(self.ll.tail.next, None) # Test isEqual() def test_isEqual(self): x_list = ['car', 'bus', 'truck'] self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.assertEqual(self.ll.isEqual(x_list), True) # Test getSize() def test_getSize(self): self.assertEqual(self.ll.getSize(), 0) self.ll.add('car') self.assertEqual(self.ll.getSize(), 1) self.ll.add('bus') self.assertEqual(self.ll.getSize(), 2) self.ll.add('truck') self.assertEqual(self.ll.getSize(), 3) # Test peek() def test_peek(self): self.assertEqual(self.ll.peek(), None) self.ll.add('car') self.assertEqual(self.ll.peek(), 'car') self.ll.add('bus') self.assertEqual(self.ll.peek(), 'car') self.ll.add('truck') self.assertEqual(self.ll.peek(), 'car') # Test peekLast() def test_peekLast(self): self.assertEqual(self.ll.peekLast(), None) self.ll.add('car') self.assertEqual(self.ll.peekLast(), 'car') self.ll.add('bus') self.assertEqual(self.ll.peekLast(), 'bus') self.ll.add('truck') self.assertEqual(self.ll.peekLast(), 'truck') # Test clear() def test_clear(self): self.ll.clear() self.assertEqual(self.ll.head, None) self.assertEqual(self.ll.tail, None) self.assertEqual(self.ll.size, 0) self.ll.add('car') self.ll.clear() self.assertEqual(self.ll.head, None) self.assertEqual(self.ll.tail, None) self.assertEqual(self.ll.size, 0) self.ll.add('car') self.ll.add('bus') self.ll.clear() self.assertEqual(self.ll.head, None) self.assertEqual(self.ll.tail, None) self.assertEqual(self.ll.size, 0) self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.ll.clear() self.assertEqual(self.ll.head, None) self.assertEqual(self.ll.tail, None) self.assertEqual(self.ll.size, 0) # Test isEmpty() def test_isEmpty(self): self.assertEqual(self.ll.isEmpty(), True) self.ll.add('car') self.assertEqual(self.ll.isEmpty(), False) self.ll.add('bus') self.assertEqual(self.ll.isEmpty(), False) self.ll.add('truck') self.assertEqual(self.ll.isEmpty(), False) self.ll.clear() self.assertEqual(self.ll.isEmpty(), True) # Test remove() def test_remove_node_empty_list(self): self.assertEqual(self.ll.getSize(), 0) self.assertEqual(self.ll.isEmpty(), True) self.assertEqual(self.ll.remove('x'), False) # Test remove() def test_remove_head_node_list_size_one(self): # list size == 1 self.ll.add('car') self.assertEqual(self.ll.remove('car'), True) self.assertEqual(self.ll.peek(), None) self.assertEqual(self.ll.peekLast(), None) self.assertEqual(self.ll.getSize(), 0) self.assertEqual(self.ll.isEmpty(), True) def test_remove_head_node_list_size_two(self): # list size == 2 self.ll.add('car') self.ll.add('bus') self.assertEqual(self.ll.remove('car'), True) self.assertEqual(self.ll.peek(), 'bus') self.assertEqual(self.ll.peekLast(), 'bus') self.assertEqual(self.ll.getSize(), 1) self.assertEqual(self.ll.isEmpty(), False) def test_remove_head_node_list_size_greater_than_two(self): # list size > 2 self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.assertEqual(self.ll.remove('car'), True) self.assertEqual(self.ll.peek(), 'bus') self.assertEqual(self.ll.peekLast(), 'truck') self.assertEqual(self.ll.getSize(), 2) self.assertEqual(self.ll.isEmpty(), False) # Test remove() def test_remove_tail_node_list_size_one(self): self.ll.add('car') self.assertEqual(self.ll.remove('car'), True) self.assertEqual(self.ll.peek(), None) self.assertEqual(self.ll.peekLast(), None) self.assertEqual(self.ll.getSize(), 0) self.assertEqual(self.ll.isEmpty(), True) # Test remove() def test_remove_tail_node_list_size_two(self): self.ll.add('car') self.ll.add('bus') self.assertEqual(self.ll.remove('bus'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'car') self.assertEqual(self.ll.getSize(), 1) self.assertEqual(self.ll.isEmpty(), False) # Test remove() def test_remove_tail_node_list_size_greater_than_two(self): self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.assertEqual(self.ll.remove('truck'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'bus') self.assertEqual(self.ll.getSize(), 2) self.assertEqual(self.ll.isEmpty(), False) # Test remove() def test_remove_mid_node_list_size_three(self): self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.assertEqual(self.ll.remove('bus'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'truck') self.assertEqual(self.ll.getSize(), 2) self.assertEqual(self.ll.isEmpty(), False) # Test remove() def test_remove_mid_node_list_size_three(self): self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.assertEqual(self.ll.remove('bus'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'truck') self.assertEqual(self.ll.getSize(), 2) self.assertEqual(self.ll.isEmpty(), False) # Test remove() def test_remove_mid_node_list_size_four(self): self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.ll.add('train') self.assertEqual(self.ll.remove('bus'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'train') self.assertEqual(self.ll.getSize(), 3) self.assertEqual(self.ll.isEmpty(), False) self.assertEqual(self.ll.remove('truck'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'train') self.assertEqual(self.ll.getSize(), 2) self.assertEqual(self.ll.isEmpty(), False) # Test remove() def test_remove_mid_node_list_size_five(self): self.ll.add('car') self.ll.add('bus') self.ll.add('truck') self.ll.add('train') self.ll.add('plane') self.assertEqual(self.ll.remove('bus'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'plane') self.assertEqual(self.ll.getSize(), 4) self.assertEqual(self.ll.isEmpty(), False) self.assertEqual(self.ll.remove('truck'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'plane') self.assertEqual(self.ll.getSize(), 3) self.assertEqual(self.ll.isEmpty(), False) self.assertEqual(self.ll.remove('train'), True) self.assertEqual(self.ll.peek(), 'car') self.assertEqual(self.ll.peekLast(), 'plane') self.assertEqual(self.ll.getSize(), 2) self.assertEqual(self.ll.isEmpty(), False)