diff --git a/scrapy/trunk/profiling/priorityqueue/test_cases.py b/scrapy/trunk/profiling/priorityqueue/test_cases.py index 4cea42c85..79b3940cd 100644 --- a/scrapy/trunk/profiling/priorityqueue/test_cases.py +++ b/scrapy/trunk/profiling/priorityqueue/test_cases.py @@ -1,5 +1,7 @@ +import sys import unittest from pq_classes import PriorityQueue1, PriorityQueue2, PriorityQueue3, PriorityQueue4, PriorityQueue5, PriorityQueue6 +from pq_classes import * # (ITEM, PRIORITY) INPUT = [(1, -5), (30, -1), (80, -3), (4, 1), (6, 3), (20, 0), (50, -1)] @@ -7,10 +9,8 @@ OUTPUT = [(1, -5), (80, -3), (30, -1), (50, -1), (20, 0), (4, 1), (6, 3)] PRIOSIZE = reduce(max, (abs(i[1]) for i in INPUT + OUTPUT)) * 2 -class PriorityQueue1TestCase(unittest.TestCase): - def setUp(self): - self.PriorityQueue = PriorityQueue1 - +class TestPriorityQueue(object): + def test_popping(self): pq = self.PriorityQueue(PRIOSIZE) for item, pr in INPUT: @@ -25,8 +25,8 @@ class PriorityQueue1TestCase(unittest.TestCase): for item, pr in INPUT: pq.push(item, pr) result = [x for x in pq] - self.assertEquals(result, OUTPUT) - + self.assertEquals(result, OUTPUT) + def test_nonzero(self): pq = self.PriorityQueue(PRIOSIZE) pq.push(80, -1) @@ -34,11 +34,11 @@ class PriorityQueue1TestCase(unittest.TestCase): pq.push(30, 1) pq.pop() - self.assertEquals(bool(pq), True) + self.assertEquals(bool(pq), True) pq.pop() - self.assertEquals(bool(pq), True) + self.assertEquals(bool(pq), True) pq.pop() - self.assertEquals(bool(pq), False) + self.assertEquals(bool(pq), False) def test_len(self): pq = self.PriorityQueue(PRIOSIZE) @@ -46,33 +46,22 @@ class PriorityQueue1TestCase(unittest.TestCase): pq.push(20, 0) pq.push(30, 1) - self.assertEquals(len(pq), 3) + self.assertEquals(len(pq), 3) pq.pop() - self.assertEquals(len(pq), 2) + self.assertEquals(len(pq), 2) pq.pop() - self.assertEquals(len(pq), 1) + self.assertEquals(len(pq), 1) pq.pop() - self.assertEquals(len(pq), 0) + self.assertEquals(len(pq), 0) -class PriorityQueue2TestCase(PriorityQueue1TestCase): - def setUp(self): - self.PriorityQueue = PriorityQueue2 -class PriorityQueue3TestCase(PriorityQueue1TestCase): - def setUp(self): - self.PriorityQueue = PriorityQueue3 +# automatically test any PriorityQueueN class defined at pq_classes +prioclasses = [(name, cls) for name, cls in globals().items() if name.startswith('PriorityQueue')] +for name, cls in prioclasses: + testname = '%sTestCase' % name + testcase = type(testname, (TestPriorityQueue, unittest.TestCase), {'PriorityQueue': cls}) + setattr(sys.modules[__name__], testname, testcase) -class PriorityQueue4TestCase(PriorityQueue1TestCase): - def setUp(self): - self.PriorityQueue = PriorityQueue4 - -class PriorityQueue5TestCase(PriorityQueue1TestCase): - def setUp(self): - self.PriorityQueue = PriorityQueue5 - -class PriorityQueue6TestCase(PriorityQueue1TestCase): - def setUp(self): - self.PriorityQueue = PriorityQueue6 if __name__ == '__main__': print "\n== Unit testing for every implementation =="