def setUp(self):
     self.ls = LinkedList2()
     self.node_1 = Node(1)
     self.node_2 = Node(2)
     self.node_3 = Node(3)
     self.ls.add_in_tail(self.node_2)
     self.ls.add_in_tail(self.node_3)
    def test_add_in_head_of_empty_list(self):
        self.ls = LinkedList2()
        self.ls.add_in_head(self.node_1)

        self.assertEqual(self.ls.head, self.node_1)
        self.assertIsNone(self.ls.head.prev)
        self.assertIsNone(self.ls.head.next)
        self.assertEqual(self.ls.tail, self.node_1)
        self.assertIsNone(self.ls.tail.next)
    def test_add_in_head_of_list_with_single_element(self):
        self.ls = LinkedList2()
        self.ls.add_in_tail(self.node_2)
        self.ls.add_in_head(self.node_1)

        self.assertEqual(self.ls.head, self.node_1)
        self.assertEqual(self.ls.tail, self.node_2)
        self.assertEqual(self.ls.head.next, self.node_2)
        self.assertEqual(self.ls.tail.prev, self.node_1)
        self.assertIsNone(self.ls.head.prev)
        self.assertIsNone(self.ls.tail.next)
    def test_delete_first_middle_last_values(self):
        self.ls = LinkedList2()
        node_1_1 = Node(1)
        node_1_2 = Node(1)
        node_1_3 = Node(1)
        node_2 = Node(2)
        node_3 = Node(3)

        self.ls.add_in_tail(node_1_1)
        self.ls.add_in_tail(node_2)
        self.ls.add_in_tail(node_1_2)
        self.ls.add_in_tail(node_3)
        self.ls.add_in_tail(node_1_3)

        self.ls.delete(1, True)

        self.assertEqual(self.ls.head, node_2)
        self.assertIsNone(self.ls.head.prev)
        self.assertEqual(self.ls.head.next, node_3)
        self.assertEqual(node_3.prev, node_2)
        self.assertEqual(self.ls.tail, node_3)
        self.assertIsNone(self.ls.tail.next)
 def setUp(self):
     self.ls = LinkedList2()
     self.node_1 = Node(1)
     self.node_2 = Node(2)
     self.node_3 = Node(3)
    def test_length_of_empty_list(self):
        self.ls = LinkedList2()
        length = self.ls.len()

        self.assertEqual(length, 0)
    def test_clean_empty_list(self):
        self.ls = LinkedList2()
        self.ls.clean()

        self.assertIsNone(self.ls.head)
        self.assertIsNone(self.ls.tail)