def test_usage_maximize(self): q = WorstBoundFirstPriorityQueue(maximize) assert q.size() == 0 assert q.bound() is None assert len(list(q.items())) == 0 assert q.get() is None items = [] for i in range(1, 11): node = Node(size=0) node.bound = -i assert node.queue_priority is None cnt_ = q.put(node._data) assert cnt_ == i - 1 assert node.queue_priority == node.bound items.append(node._data) assert q.size() == i assert q.bound() == -1 _check_items(q, items) assert q.size() == 10 assert q.bound() == -1 removed = q.filter(lambda data: \ Node._extract_bound(data) <= -5) assert q.size() == 6 assert len(removed) == 4 for data in removed: assert Node._extract_bound(data) > -5 assert q.bound() == -5 for i in range(5, 11): node = Node(data_=q.get()) assert node.bound == -i assert node.queue_priority == node.bound if i != 10: assert q.bound() == -i - 1 else: assert q.bound() is None assert q.size() == 0 node = Node(size=0) node.bound = 1 assert node.queue_priority is None cnt_, data = q.put_get(node._data) assert cnt_ == 10 assert data is node._data assert node.queue_priority == 1 node.bound = 2 cnt_ = q.put(node._data) assert node.queue_priority == 2 assert cnt_ == 11 node2 = Node(size=0) node2.bound = 3 assert node2.queue_priority is None cnt_, data = q.put_get(node2._data) assert cnt_ == 12 assert data is node2._data assert node2.queue_priority == 3 node2.bound = 1 cnt_, data = q.put_get(node2._data) assert node2.queue_priority == 1 assert cnt_ == 13 assert data is node._data assert q.size() == 1
def test_usage_maximize(self): q = WorstBoundFirstPriorityQueue(sense=maximize, track_bound=True) assert q.size() == 0 assert q.bound() is None assert len(list(q.items())) == 0 assert q.get() is None items = [] for i in range(1, 11): node = Node() node.bound = -i assert node.queue_priority is None cnt_ = q.put(node) assert cnt_ == i - 1 assert node.queue_priority == node.bound items.append(node) assert q.size() == i assert q.bound() == -1 _check_items(q, items) assert q.size() == 10 assert q.bound() == -1 removed = q.filter(lambda n_: n_.bound <= -5) assert q.size() == 6 assert len(removed) == 4 for node_ in removed: assert node_.bound > -5 assert q.bound() == -5 for i in range(5, 11): node = q.get() assert node.bound == -i assert node.queue_priority == node.bound if i != 10: assert q.bound() == -i - 1 else: assert q.bound() is None assert q.size() == 0 node = Node() node.bound = 1 assert node.queue_priority is None cnt_ = q.put(node) node_ = q.get() assert cnt_ == 10 assert node_ is node assert node.queue_priority == 1 node.bound = 2 cnt_ = q.put(node) assert node.queue_priority == 2 assert cnt_ == 11 node2 = Node() node2.bound = 3 assert node2.queue_priority is None cnt_ = q.put(node2) node_ = q.get() assert cnt_ == 12 assert node_ is node2 assert node2.queue_priority == 3 node2.bound = 1 cnt_ = q.put(node2) node_ = q.get() assert node2.queue_priority == 1 assert cnt_ == 13 assert node_ is node assert q.size() == 1