def test_first(self):
        self.assertEqual(self.num_queue.first(), 1)
        self.assertEqual(self.letter_queue.first(), "a")

        empty_queue = Queue()
        with self.assertRaises(LookupError):
            empty_queue.first()
class TestQueue(unittest.TestCase):
    def setUp(self):
        self.num_queue = Queue()
        self.num_queue.enqueue(3)
        self.num_queue.enqueue(2)
        self.num_queue.enqueue(1)

        self.letter_queue = Queue()
        self.letter_queue.enqueue("b")
        self.letter_queue.enqueue("a")

    def test_enqueue(self):
        empty_queue = Queue()
        empty_queue.enqueue(4)
        self.assertEqual(len(empty_queue), 1)

    def test_len(self):
        self.assertEqual(len(self.num_queue), 3)
        self.assertEqual(len(self.letter_queue), 2)

    def test_repr(self):
        self.assertEqual(repr(self.num_queue), "Queue(1, 2, 3)")
        self.assertEqual(repr(self.letter_queue), "Queue(a, b)")

    def test_dequeue(self):
        first = self.num_queue.dequeue()
        self.assertEqual(len(self.num_queue), 2)
        self.assertEqual(first, 1)
        second = self.num_queue.dequeue()
        self.assertEqual(second, 2)
        self.assertEqual(len(self.num_queue), 1)

        empty_queue = Queue()
        with self.assertRaises(LookupError):
            empty_queue.dequeue()

    def test_first(self):
        self.assertEqual(self.num_queue.first(), 1)
        self.assertEqual(self.letter_queue.first(), "a")

        empty_queue = Queue()
        with self.assertRaises(LookupError):
            empty_queue.first()