Пример #1
0
    def test_enqueue_adds_an_element_to_the_back_of_queue(self):
        q = CircularQueue()
        first_element = CircularQueue._Node('foo', None)
        first_element._next = first_element
        q._tail = first_element
        q._size = 1
        second_element = 'bar'

        q.enqueue(second_element)
        result = q._tail._element

        self.assertEqual(result, second_element)
Пример #2
0
    def test_first_returns_first_element_without_removing_it(self):
        q = CircularQueue()
        newest = CircularQueue._Node('foo', None)
        newest._next = newest
        q._tail = newest
        q._size = 1
        expected_result = 'foo'

        result = q.first()

        self.assertEqual(result, expected_result)
        self.assertIn(expected_result, q._tail._next._element)
Пример #3
0
    def test_rotate_moves_front_element_to_back_of_queue(self):
        q = CircularQueue()
        second_element = CircularQueue._Node('bar', None)
        first_element = CircularQueue._Node('foo', None)
        q._tail = second_element
        q._tail._next = first_element
        q._size = 2
        expected_result = 'foo'

        q.rotate()
        result = q._tail._element

        self.assertEqual(result, expected_result)
Пример #4
0
    def test_dequeue_returns_and_removes_first_element_from_queue(self):
        q = CircularQueue()
        second_element = CircularQueue._Node('bar', None)
        first_element = CircularQueue._Node('foo', None)
        q._tail = second_element
        q._tail._next = first_element
        q._size = 2
        expected_result = 'foo'

        result = q.dequeue()

        self.assertEqual(q._size, 1)
        self.assertEqual(result, expected_result)
        self.assertIsNot(q._tail._next, first_element)