from datetime import datetime import unittest from pyson.ObjectMapper import ObjectMapper from geniusweb.progress.Progress import Progress from geniusweb.progress.ProgressRounds import ProgressRounds class ProgressRoundsTest(unittest.TestCase): pyson=ObjectMapper() progress = ProgressRounds(12, 0, datetime.fromtimestamp(100000.9)) progress1 = ProgressRounds(12, 0, datetime.fromtimestamp(100000.9)) progress2 = ProgressRounds(11, 0, datetime.fromtimestamp(100000.9)) progresjson = {"ProgressRounds":{"duration":12,"currentRound":0,"endtime":100000900}} final=ProgressRounds(12,12, datetime.fromtimestamp(100000.9)); def testDeserialization(self): self.assertEqual(self.progress, self.pyson.parse(self.progresjson, Progress)) def testSerialization(self): print(self.pyson.toJson(self.progress)) self.assertEqual(self.progresjson, self.pyson.toJson(self.progress)) def testRepr(self): self.assertEqual("ProgressRounds[0 of 12,100000.9]", repr(self.progress)) def testEqual(self): self.assertEqual(self.progress, self.progress1) self.assertNotEqual(self.progress, self.progress2) self.assertEqual(hash(self.progress), hash(self.progress1)) self.assertNotEqual(hash(self.progress), hash(self.progress2)) def testDuration(self): self.assertEqual(12, self.progress.getDuration()) def testAdvance(self): prog=self.progress.advance() self.assertEqual(1, prog.getCurrentRound()) def testAdvanceFinal(self): self.final.advance() def testTerminationTime(self): self.assertEqual(datetime.fromtimestamp(100000.9), self.progress.getTerminationTime()) def testIsPastDeadline(self): self.assertFalse(self.progress.isPastDeadline(500)) self.assertFalse(self.progress.isPastDeadline(100000900)) self.assertTrue(self.progress.isPastDeadline(100000901)) self.assertTrue(self.final.isPastDeadline(100)) def testGet(self): self.assertEqual(0, self.progress.get(100000900-1)) # get ignores the time deadline. self.assertEqual(0, self.progress.get(100000901)) #check final if all rounds completed. self.assertEqual(1, self.final.get(100000900-1)) halfway = ProgressRounds(12,6, datetime.fromtimestamp(100000900)); self.assertEqual(0.5, halfway.get(100000900-1) )