Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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