mirror of https://github.com/scrapy/scrapy.git
profiling: automatically test include new PriorityQueue classes in testcases
--HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40995
This commit is contained in:
parent
e1c1865c2a
commit
44ba741277
|
|
@ -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 =="
|
||||
|
|
|
|||
Loading…
Reference in New Issue