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:
Daniel Grana 2009-03-19 02:47:59 +00:00
parent e1c1865c2a
commit 44ba741277
1 changed files with 19 additions and 30 deletions

View File

@ -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 =="