Esempio n. 1
0
class Test(unittest.TestCase):
	"""
	Currently tests only the AsnDmcEventSystem
	
	Tests only functionality. Need to test for exceptions, bad inputs, funny
	cases.
	"""
	def setUp(self):
		self.pq = deque()
		self.es = AsnDmcEventSystem(self.pq)

	def testAmcDmcInit(self):
		self.assertEquals(self.es._asn, [])
		self.assertEquals(self.es._asndmc, [])
		self.assertIs(self.es._pq, self.pq)
		
	def testAmcDmcSubscribe(self):
		self.es.subscribe('p1', 1)
		self.assertIn('p1', self.es._asndmc)
		self.es.subscribe('p0', 0)
		self.assertIn('p0', self.es._asn)
		self.es.subscribe('p2',1)
		self.es.subscribe('p2',0)
		self.assertIn('p2', self.es._asn)
		self.assertIn('p2', self.es._asndmc)

	def testAmcDmcCancel(self):
		self.es.subscribe('p1', 1)
		self.es.subscribe('p1', 0)
		self.es.cancel('p1', 1)
		self.assertNotIn('p1', self.es._asndmc)
		self.assertIn('p1', self.es._asn)
		self.es.cancel('p1', 0)
		self.assertNotIn('p1', self.es._asn)
		
	def testAmcDmcSchedule(self):
		self.es.subscribe('p1', 1)
		self.es.subscribe('p2', 1)
		self.es.subscribe('p0', 0)
		self.es.schedule(1)
		self.assertTrue(len(self.pq) == 3)
		self.assertIn('p1', self.pq)
		self.assertIn('p2', self.pq)
		self.assertIn('p0', self.pq)
		
		self.es.schedule(0)
		
		c = Counter(self.pq)
		self.assertTrue(len(self.pq) == 5)
		self.assertTrue(c['p1'] == 2)
		self.assertTrue(c['p2'] == 2)
		self.assertIn('p0', self.pq)