Skip to content
Snippets Groups Projects
Select Git revision
  • 7a266135111c9cf43523508d41714540fccbafba
  • main default protected
2 results

TestDequesDifferentially.py

Blame
  • TestDequesDifferentially.py 3.69 KiB
    """
    Create a new Python file and a new test class TestDequesDifferentially.
    In it, write differential test cases exercising collections.deque (a
    built-in, array-based implementation with slightly different method
    namesLinks to an external site.) and your LinkedDeque implementation.
    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() )