[73] | 1 | from queue import Empty
|
---|
| 2 | import unittest
|
---|
| 3 |
|
---|
| 4 | from geniusweb.PriorityQueue import PriorityQueue
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | class A:
|
---|
| 8 | def __init__(self, x):
|
---|
| 9 | self.x=x
|
---|
| 10 | def get(self):
|
---|
| 11 | return self.x
|
---|
| 12 | def __repr__(self):
|
---|
| 13 | return str(self.x)
|
---|
| 14 | def __hash__(self):
|
---|
| 15 | return hash(self.x)
|
---|
| 16 | def __eq__(self,other):
|
---|
| 17 | return self.x==other.x
|
---|
| 18 |
|
---|
| 19 |
|
---|
| 20 | class PriorityQueueTest(unittest.TestCase):
|
---|
| 21 |
|
---|
| 22 | def setUp(self):
|
---|
| 23 | self.q=PriorityQueue[int]( lambda x,y: x.get() < y.get())
|
---|
| 24 |
|
---|
| 25 | def testSmoke(self):
|
---|
| 26 | PriorityQueue(lambda:False)
|
---|
| 27 |
|
---|
| 28 | def testPush1(self):
|
---|
| 29 | self.assertEqual(0, self.q.qsize())
|
---|
| 30 | self.assertTrue(self.q.empty())
|
---|
| 31 | self.q.put(A(1))
|
---|
| 32 | self.assertEqual(1, self.q.qsize())
|
---|
| 33 | self.assertFalse(self.q.empty())
|
---|
| 34 |
|
---|
| 35 | self.assertEqual(A(1), self.q.get( block=False))
|
---|
| 36 | self.assertEqual(0, self.q.qsize())
|
---|
| 37 | self.assertTrue(self.q.empty())
|
---|
| 38 |
|
---|
| 39 | self.assertRaises(Empty, lambda:self.q.get(block=False))
|
---|
| 40 |
|
---|
| 41 | def testPushDuplicates(self):
|
---|
| 42 | self.q.put(A(1))
|
---|
| 43 | self.q.put(A(1))
|
---|
| 44 | self.assertEqual(2, self.q.qsize())
|
---|
| 45 |
|
---|
| 46 | self.assertEqual(A(1), self.q.get(block=False))
|
---|
| 47 | self.assertEqual(A(1), self.q.get(block=False))
|
---|
| 48 | self.assertTrue( self.q.empty())
|
---|
| 49 |
|
---|
| 50 | def testProperSorted(self):
|
---|
| 51 | self.q.put(A(2))
|
---|
| 52 | self.q.put(A(3))
|
---|
| 53 | self.q.put(A(1))
|
---|
| 54 | self.assertEqual(A(1), self.q.get(block=False))
|
---|
| 55 | self.assertEqual(A(2), self.q.get(block=False))
|
---|
| 56 | self.assertEqual(A(3), self.q.get(block=False))
|
---|
| 57 |
|
---|
| 58 | def testReverseSort(self):
|
---|
| 59 | q1=PriorityQueue( lambda x,y: x.get() > y.get())
|
---|
| 60 | q1.put(A(2))
|
---|
| 61 | q1.put(A(3))
|
---|
| 62 | q1.put(A(1))
|
---|
| 63 | self.assertEqual(A(3), q1.get(block=False))
|
---|
| 64 | self.assertEqual(A(2), q1.get(block=False))
|
---|
| 65 | self.assertEqual(A(1), q1.get(block=False))
|
---|
| 66 |
|
---|
| 67 | def testContains(self):
|
---|
| 68 | self.q.put(A(2))
|
---|
| 69 | self.q.put(A(3))
|
---|
| 70 | self.q.put(A(1))
|
---|
| 71 | self.assertTrue(A(1) in self.q) |
---|