1. from collections import deque
  2. def assert_queue_sanity(queue, name="Queue"):
  3. """
  4. Asserts basic sanity checks for a queue.
  5. Args:
  6. queue: The queue to check.
  7. name: A descriptive name for the queue (for error messages).
  8. """
  9. assert isinstance(queue, deque), f"{name}: Queue must be a deque."
  10. assert len(queue) >= 0, f"{name}: Queue length must be non-negative."
  11. # Check if elements are hashable (important for sets/dictionaries)
  12. try:
  13. hash(next(iter(queue))) # Attempt to hash an element
  14. except TypeError:
  15. raise AssertionError(f"{name}: Queue elements must be hashable.")
  16. # Check if queue is empty if it's supposed to be
  17. if len(queue) == 0:
  18. assert True, f"{name}: Queue is empty, but expected to have elements."
  19. if __name__ == '__main__':
  20. #Example Usage
  21. q1 = deque([1, 2, 3])
  22. assert_queue_sanity(q1, "my_queue1")
  23. q2 = deque()
  24. assert_queue_sanity(q2, "empty_queue")
  25. q3 = deque(['a', 'b', 'c'])
  26. assert_queue_sanity(q3, "string_queue")
  27. try:
  28. q4 = deque([1, [1,2]])
  29. assert_queue_sanity(q4, "unhashable_queue")
  30. except AssertionError as e:
  31. print(e)

Add your comment