def testGetPolicy(self): a = Assignment('A01') a.due = '20140615-0000' early1 = LatePolicy('-3d:+10', a.due) early2 = LatePolicy('-1d:+5', a.due) late1 = LatePolicy('+1d:-15', a.due) late2 = LatePolicy('+2d:-30', a.due) tests = { ('20140614-0000', None): None, #no polices ('20140616-0000', None): None, ('20140614-1200', (late1, late2)): None, #early ('20140614-1200', (late2,)): None, ('20140614-1200', (early1,)): early1, ('20140614-1200', (early1, early2, late1)): early2, ('20140610-1200', (early1, early2, late1)): early1, ('20140615-1200', (early1, early2)): None, #late ('20140615-1200', (early1,)): None, ('20140615-1200', (early1, late1)): late1, ('20140616-1200', (early1, late1)): late1, ('20140616-1200', (early1, late1, late2)): late2, ('20140619-1200', (early1, late1, late2)): late2, } for (timestamp, policies), expected in tests.items(): a.policies = list(policies) if policies else None self.assertEqual(a.getPolicy(timestamp), expected)