diff --git a/lab - linked list lab/TestDequesDifferentially.py b/lab - linked list lab/TestDequesDifferentially.py index 62a201d97ab4304229404fa0e9e7ba9441481ddd..c285b9816260bdbac0598afe12677aee1ed08a48 100644 --- a/lab - linked list lab/TestDequesDifferentially.py +++ b/lab - linked list lab/TestDequesDifferentially.py @@ -7,9 +7,105 @@ Your test should exercise the deques in a variety of situations, including situations where they have been modified on both sides. Verify that the two implementations agree on your test cases. """ +from collections import deque from unittest import TestCase from linked_list_example import doubly_linked_node from linked_list_example import LinkedDeque class TestDequesDifferentially(TestCase): + def test_is_empty_true(self): + linked_deque = LinkedDeque() + + self.assertEqual( linked_deque.is_empty(), True) + + def test_is_empty_false(self): + linked_deque = LinkedDeque() + linked_deque.add_back(1) + + self.assertEqual( linked_deque.is_empty(), False) + + def test_add_3_elements_front_only(self): + linked_deque = LinkedDeque() + linked_deque.add_front(1) + linked_deque.add_front(2) + linked_deque.add_front(3) + + """ + none + 1 + 2 1 + 3 2 1 + """ + + self.assertEqual( linked_deque.remove_front(), 3) + self.assertEqual( linked_deque.remove_front(), 2) + self.assertEqual( linked_deque.remove_front(), 1) + + def test_add_3_elements_back_only(self): + linked_deque = LinkedDeque() + linked_deque.add_back(1) + linked_deque.add_back(2) + linked_deque.add_back(3) + """ + none + 1 + 1 2 + 1 2 3 + """ + + self.assertEqual( linked_deque.remove_back(), 3) + self.assertEqual( linked_deque.remove_back(), 2) + self.assertEqual( linked_deque.remove_back(), 1) + + def test_add_elements_like_ping_pong(self): + linked_deque = LinkedDeque() + linked_deque.add_front("f1") + linked_deque.add_back("b1") + linked_deque.add_front("f2") + linked_deque.add_back("b2") + linked_deque.add_front("f3") + linked_deque.add_back("b3") + + """ + none + f1 + f1 b1 + f2 f1 b1 + f2 f1 b1 b2 + f3 f2 b1 b2 + f3 f2 b1 b2 b3 + """ + + self.assertEqual( linked_deque.remove_front(), "f3") + self.assertEqual( linked_deque.remove_back(), "b3") + self.assertEqual( linked_deque.remove_front(), "f2") + self.assertEqual( linked_deque.remove_back(), "b2") + self.assertEqual( linked_deque.remove_front(), "f1") + self.assertEqual( linked_deque.remove_back(), "b1") + + def test_compare_array_ADT_and_linked_ADT(self): + array_deque = deque() + linked_deque = LinkedDeque() + + array_deque.append("b1") + array_deque.appendleft("f1") + array_deque.append("b2") + array_deque.appendleft("f2") + array_deque.append("b3") + array_deque.appendleft("f3") + + linked_deque.add_front("f1") + linked_deque.add_back("b1") + linked_deque.add_front("f2") + linked_deque.add_back("b2") + linked_deque.add_front("f3") + linked_deque.add_back("b3") + + self.assertEqual( array_deque.popleft(), linked_deque.remove_front() ) + self.assertEqual( array_deque.pop(), linked_deque.remove_back() ) + self.assertEqual( array_deque.popleft(), linked_deque.remove_front() ) + self.assertEqual( array_deque.pop(), linked_deque.remove_back() ) + self.assertEqual( array_deque.popleft(), linked_deque.remove_front() ) + self.assertEqual( array_deque.pop(), linked_deque.remove_back() ) +