from collections import deque
def assert_queue_sanity(queue, name="Queue"):
"""
Asserts basic sanity checks for a queue.
Args:
queue: The queue to check.
name: A descriptive name for the queue (for error messages).
"""
assert isinstance(queue, deque), f"{name}: Queue must be a deque."
assert len(queue) >= 0, f"{name}: Queue length must be non-negative."
# Check if elements are hashable (important for sets/dictionaries)
try:
hash(next(iter(queue))) # Attempt to hash an element
except TypeError:
raise AssertionError(f"{name}: Queue elements must be hashable.")
# Check if queue is empty if it's supposed to be
if len(queue) == 0:
assert True, f"{name}: Queue is empty, but expected to have elements."
if __name__ == '__main__':
#Example Usage
q1 = deque([1, 2, 3])
assert_queue_sanity(q1, "my_queue1")
q2 = deque()
assert_queue_sanity(q2, "empty_queue")
q3 = deque(['a', 'b', 'c'])
assert_queue_sanity(q3, "string_queue")
try:
q4 = deque([1, [1,2]])
assert_queue_sanity(q4, "unhashable_queue")
except AssertionError as e:
print(e)
Add your comment