def simulation(numseconds, pagesperminute): labprinter = Printer(pagesperminute) printerqueue = Queue() waitingtimes = [] longestqueue = 0 for currentsecond in range(numseconds): if newprinttask(): newtask = Task(currentsecond) printerqueue.enqueue(newtask) if printerqueue.size() > longestqueue: longestqueue = printerqueue.size() if not labprinter.busy() and printerqueue.has_items(): nexttask = printerqueue.dequeue() waitingtimes.append(nexttask.waittime(currentsecond)) labprinter.startnext(nexttask) labprinter.tick() averagewait = sum(waitingtimes) / len(waitingtimes) print "Average Wait %6.2f secs %3d tasks remaining." % ( averagewait, printerqueue.size()) print "The longest the queue got to was %d tasks. \n" % (longestqueue)
def test_tick(self): # Create a new printer, give it a task, check if ticking down to 0 works laserjet = Printer(20) laserjet.currenttask = True laserjet.timeremaining = 10 self.assertEqual(laserjet.timeremaining, 10) laserjet.tick() self.assertEqual(laserjet.timeremaining, 9) for i in range(9): laserjet.tick() self.assertEqual(laserjet.currenttask, None) self.assertEqual(laserjet.timeremaining, 0)
def simulation(numseconds, pagesperminute): labprinter = Printer(pagesperminute) printerqueue = Queue() waitingtimes = [] longestqueue = 0 for currentsecond in range(numseconds): if newprinttask(): newtask = Task(currentsecond) printerqueue.enqueue(newtask) if printerqueue.size() > longestqueue: longestqueue = printerqueue.size() if not labprinter.busy() and printerqueue.has_items(): nexttask = printerqueue.dequeue() waitingtimes.append(nexttask.waittime(currentsecond)) labprinter.startnext(nexttask) labprinter.tick() averagewait = sum(waitingtimes)/len(waitingtimes) print "Average Wait %6.2f secs %3d tasks remaining." % (averagewait, printerqueue.size()) print "The longest the queue got to was %d tasks. \n" % (longestqueue)
def test_busy(self): # Create a printer, give it a task, check if busy canon = Printer(12) self.assertEqual(canon.busy(), False) canon.currenttask = True self.assertEqual(canon.busy(), True)
def test_init(self): # Create a printer, check if initial values match inkjet = Printer(6) self.assertEqual(inkjet.pagerate, 6) self.assertEqual(inkjet.currenttask, None) self.assertEqual(inkjet.timeremaining, 0)