import unittest from datetime import datetime, timedelta, timezone from zoneinfo import ZoneInfo import original, proposed class ReviewTests(unittest.TestCase): def test_policy_cases(self): now=datetime(2026,10,3,12,tzinfo=timezone.utc) cases=[('new',0,60,True),('just_before',59.999999,60,True),('expires',60,60,False),('old',61,60,False),('day_old',86401,60,False),('two_days',172801,60,False),('future',-86399,60,False),('tiny_future',-.000001,60,False),('zero_ttl',0,0,False),('long_ttl',90000,100000,True)] for name,age,ttl,expected in cases: with self.subTest(name=name):self.assertIs(proposed.is_fresh(now-timedelta(seconds=age),now,ttl),expected) def test_original_reproductions(self): now=datetime(2026,10,3,12,tzinfo=timezone.utc) for age in (60,86401,172801,-86399): with self.subTest(age=age):self.assertTrue(original.is_fresh(now-timedelta(seconds=age),now,60));self.assertFalse(proposed.is_fresh(now-timedelta(seconds=age),now,60)) def test_invalid_inputs(self): now=datetime(2026,10,3,12,tzinfo=timezone.utc) for ttl in (-1,float('nan'),float('inf'),True,'60',None,10**1000): with self.subTest(ttl=ttl): with self.assertRaises(ValueError):proposed.is_fresh(now,now,ttl) for stored,current in ((now.replace(tzinfo=None),now),(now,now.replace(tzinfo=None)),(None,now)): with self.subTest(stored=stored,current=current): with self.assertRaises(ValueError):proposed.is_fresh(stored,current,60) def test_equivalent_offset_instants(self): stored=datetime(2026,10,3,8,tzinfo=timezone(timedelta(hours=-4))) now=datetime(2026,10,3,12,0,59,tzinfo=timezone.utc) self.assertTrue(proposed.is_fresh(stored,now,60)) def test_dst_wall_time_is_not_elapsed_time(self): ny=ZoneInfo('America/New_York') stored=datetime(2026,11,1,1,30,tzinfo=ny,fold=0) now=datetime(2026,11,1,1,30,tzinfo=ny,fold=1) self.assertEqual((now-stored).total_seconds(),0) self.assertTrue(original.is_fresh(stored,now,60)) self.assertFalse(proposed.is_fresh(stored,now,60)) if __name__=='__main__':unittest.main()