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)
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)
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)
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)