from datetime import datetime import unittest from pyson.ObjectMapper import ObjectMapper from geniusweb.progress.Progress import Progress from geniusweb.progress.ProgressRounds import ProgressRounds from geniusweb.progress.ProgressTime import ProgressTime class ProgressTimeTest(unittest.TestCase): pyson=ObjectMapper() progress = ProgressTime(1999, datetime.fromtimestamp(100000.9)) progress1 = ProgressTime(1999, datetime.fromtimestamp(100000.9)) progress2 = ProgressTime(999, datetime.fromtimestamp(100000.9)) progress3 = ProgressTime(1999, datetime.fromtimestamp(100001.9)) progresjson = {"ProgressTime":{"duration":1999, 'start':100000900}} 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("ProgressTime[100000.9 , 1999ms]", repr(self.progress)) def testEqual(self): self.assertEqual(self.progress, self.progress1) self.assertNotEqual(self.progress, self.progress2) self.assertNotEqual(self.progress, self.progress3) self.assertEqual(hash(self.progress), hash(self.progress1)) self.assertNotEqual(hash(self.progress), hash(self.progress2)) self.assertNotEqual(hash(self.progress), hash(self.progress3)) def testPastDeadline(self): self.assertFalse(self.progress.isPastDeadline(100000900+1999)) self.assertTrue(self.progress.isPastDeadline(100000900+1999+1)) def testTerminationTime(self): self.assertEqual(datetime.fromtimestamp((100000900+1999)/1000), self.progress.getTerminationTime()) def testGet(self): self.assertEqual(0, self.progress.get(100000.9)) self.assertEqual(1, self.progress.get(100000.9+1999)) self.assertEqual(0.5, self.progress.get(100000.9+1999/2))