input: Write a function to implement a FIFO queue class with methods to enqueue, dequeue, check if empty, and get size.
  assert q.is_empty() == True
  q.enqueue(1)
  q.enqueue(2)
  q.enqueue(3)
  assert q.size() == 3
  assert q.dequeue() == 1
  assert q.dequeue() == 2
  assert q.dequeue() == 3
  assert q.is_empty() == True
output: class FIFOQueue:
      def __init__(self):
          self.queue = []
  
      def enqueue(self, item):
          self.queue.append(item)
  
      def dequeue(self):
          if self.is_empty():
              raise IndexError("dequeue from empty queue")
          return self.queue.pop(0)
  
      def is_empty(self):
          return len(self.queue) == 0
  
      def size(self):
          return len(self.queue)
  
  # Test the FIFOQueue class
  q = FIFOQueue()
  assert q.is_empty() == True
  q.enqueue(1)
  q.enqueue(2)
  q.enqueue(3)
  assert q.size() == 3
  assert q.dequeue() == 1
  assert q.dequeue() == 2
  assert q.dequeue() == 3
  assert q.is_empty() == True