Example #1
0
    def test_basic_functionality(self):
        # Make a priority queue
        queue = UniqueQueue()

        # It should be empty
        self.assertTrue(queue.empty())

        # Put some stuff in it.  Use `silent` mode for brevity.
        queue.silent = True
        queue.put(2)
        queue.put(0)
        queue.put(2)
        queue.put(1)

        # Make sure the non-silent API causes the class to throw.
        queue.silent = False
        with self.assertRaises(Duplicate):
            queue.put(0)

        # Not empty any more
        self.assertFalse(queue.empty())

        # Remove stuff
        self.assertEqual(queue.get(), 2)
        self.assertEqual(queue.get(), 0)
        self.assertEqual(queue.get(), 1)

        # It should be empty again
        self.assertTrue(queue.empty())

        # Put an old duplicate back in it, make sure it's not empty again
        queue.put(0)
        self.assertFalse(queue.empty())

        # Set "explicit_unsee" mode to verify some of that behavior, and go
        # back to silent discards for brevity.
        queue.silent = True
        queue.explicit_unsee = True

        # Remove the item we just inserted.  Things should be empty.
        queue.get()
        self.assertTrue(queue.empty())

        # Because we didn't explicitly unsee, the 0 should be discarded
        # instead of re-queued, and the queue should remain empty.
        queue.put(0)
        self.assertTrue(queue.empty())

        # Now, explicitly unsee, and re-queue.  It should succeed.
        queue.unsee(0)
        queue.put(0)
        self.assertFalse(queue.empty())
Example #2
0
 def _makeQueue(self):
     q = UniqueQueue(maxsize=self.max_items)
     q.explicit_unsee = True
     return q
Example #3
0
 def _makeQueue(self):
     q = UniqueQueue(maxsize=self.max_items)
     q.explicit_unsee = True
     return q