input: 
  def test_linked_list_operations() -> None:
      """
      Test the operations of a doubly linked list.
      >>> ll = DoubleLinkedList()
      >>> ll.append(1)
      >>> ll.append(2)
      >>> ll.append(3)
      >>> ll.prepend(0)
      >>> result = []
      >>> curr_node = ll.head
      >>> while curr_node:
      ...     result.append(curr_node.data)
      ...     curr_node = curr_node.next
      >>> result
      [0, 1, 2, 3]
      >>> ll.reverse()
      >>> result = []
      >>> curr_node = ll.head
      >>> while curr_node:
      ...     result.append(curr_node.data)
      ...     curr_node = curr_node.next
      >>> result
      [3, 2, 1, 0]
      """
  
output:     ll = DoubleLinkedList()
      ll.append(1)
      ll.append(2)
      ll.append(3)
      ll.prepend(0)
      result = []
      curr_node = ll.head
      while curr_node:
          result.append(curr_node.data)
          curr_node = curr_node.next
      assert result == [0, 1, 2, 3]
      ll.reverse()
      result = []
      curr_node = ll.head
      while curr_node:
          result.append(curr_node.data)
          curr_node = curr_node.next
      assert result == [3, 2, 1, 0]