def test_update_when_when_non_empty_linked_list_and_item_is_present(self):
        # Arrange
        linkedlist = LinkedList()
        linkedlist.push_back("Umair")

        # Act
        updated = linkedlist.update("Umair", "Usman")

        # Assert
        self.assertTrue(updated)
        self.assertTrue(linkedlist.find("Usman"))
    def test_find_when_when_non_empty_linked_list_and_item_is_present(self):
        # Arrange
        linkedlist = LinkedList()
        linkedlist.push_back("Umair")

        # Act
        found = linkedlist.find("Umair")

        # Assert
        self.assertTrue(found)
        self.assertEqual("Umair", found.data)
    def test_push_back_when_empty_linked_list(self):
        # Arrange
        linkedlist = LinkedList()

        # Act
        pushed = linkedlist.push_back("Umair")

        # Assert
        self.assertTrue(pushed)
        self.assertTrue(linkedlist.size() == 1)
        self.assertTrue(linkedlist.find("Umair"))
    def test_push_back_when_single_item_linked_list(self):
        # Arrange
        linkedlist = LinkedList()
        linkedlist.push_back("Umair")

        # Act
        pushed = linkedlist.push_back("Aamir")

        # Assert
        self.assertTrue(pushed)
        self.assertTrue(linkedlist.size() == 2)
        self.assertTrue(linkedlist.find("Aamir"))
    def test_push_back_when_more_than_two_items_linked_list(self):
        # Arrange
        linkedlist = LinkedList()
        linkedlist.push_back("Umair")
        linkedlist.push_back("Usman")
        linkedlist.push_back("Rayan")

        # Act
        pushed = linkedlist.push_back("Aamir")

        # Assert
        self.assertTrue(pushed)
        self.assertTrue(linkedlist.size() == 4)
        self.assertTrue(linkedlist.find("Aamir"))