Update of /cvsroot/python/python/nondist/sandbox/datetime In directory usw-pr-cvs1:/tmp/cvs-serv20152 Modified Files: datetime.py test_datetime.py Log Message: Change constructor to raise ValueError on out-of-range arguments instead of assert-failing. Change day range test to use the correct largest day number for the given month and year. Index: datetime.py =================================================================== RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** datetime.py 1 Mar 2002 22:53:43 -0000 1.5 --- datetime.py 1 Mar 2002 23:53:47 -0000 1.6 *************** *** 105,115 **** def __init__(self, year, month, day, hour=0, minute=0, second=0, microsecond=0, tzoffset=None): ! assert MINYEAR <= year <= MAXYEAR, year ! assert 1 <= month <= 12, month ! assert 1 <= day <= 31, day # XXX calendrical check ! assert 0 <= hour <= 23, hour ! assert 0 <= minute <= 59, minute ! assert 0 <= second <= 59, second ! assert 0 <= microsecond <= 999999, microsecond if tzoffset is None: if datetime.__isdst is None: --- 105,124 ---- def __init__(self, year, month, day, hour=0, minute=0, second=0, microsecond=0, tzoffset=None): ! if not MINYEAR <= year <= MAXYEAR: ! raise ValueError('year must be in %d..%d' % (MINYEAR, MAXYEAR), ! year) ! if not 1 <= month <= 12: ! raise ValueError('month must be in 1..12', month) ! dim = _days_in_month(month, year) ! if not 1 <= day <= dim: ! raise ValueError('day must be in 1..%d' % dim, day) ! if not 0 <= hour <= 23: ! raise ValueError('hour must be in 0..23', hour) ! if not 0 <= minute <= 59: ! raise ValueError('minute must be in 0..59', minute) ! if not 0 <= second <= 59: ! raise ValueError('second must be in 0..59', second) ! if not 0 <= microsecond <= 999999: ! raise ValueError('second must be in 0..999999', microsecond) if tzoffset is None: if datetime.__isdst is None: *************** *** 119,123 **** else: tzoffset = -(_time.timezone // 60) ! assert -1439 <= tzoffset <= 1439, tzoffset self.__year = year self.__month = month --- 128,133 ---- else: tzoffset = -(_time.timezone // 60) ! if not -1439 <= tzoffset <= 1439: ! raise ValueError('tzoffset must be in -1439..1439', tzoffset) self.__year = year self.__month = month Index: test_datetime.py =================================================================== RCS file: /cvsroot/python/python/nondist/sandbox/datetime/test_datetime.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** test_datetime.py 1 Mar 2002 22:42:28 -0000 1.2 --- test_datetime.py 1 Mar 2002 23:53:47 -0000 1.3 *************** *** 36,39 **** --- 36,78 ---- self.assertEqual(base, derived) + def test_bad_constructor_arguments(self): + from datetime import MINYEAR, MAXYEAR + # bad years + datetime(MINYEAR, 1, 1) # no exception + datetime(MAXYEAR, 1, 1) # no exception + self.assertRaises(ValueError, datetime, MINYEAR-1, 1, 1) + self.assertRaises(ValueError, datetime, MAXYEAR+1, 1, 1) + # bad months + datetime(2000, 1, 1) # no exception + datetime(2000, 12, 1) # no exception + self.assertRaises(ValueError, datetime, 2000, 0, 1) + self.assertRaises(ValueError, datetime, 2000, 13, 1) + # bad days + datetime(2000, 2, 29) # no exception + datetime(2004, 2, 29) # no exception + datetime(2400, 2, 29) # no exception + self.assertRaises(ValueError, datetime, 2000, 2, 30) + self.assertRaises(ValueError, datetime, 2001, 2, 29) + self.assertRaises(ValueError, datetime, 2100, 2, 29) + self.assertRaises(ValueError, datetime, 1900, 2, 29) + self.assertRaises(ValueError, datetime, 1900, 2, 29) + self.assertRaises(ValueError, datetime, 2000, 1, 0) + self.assertRaises(ValueError, datetime, 2000, 1, 32) + # bad hours + datetime(2000, 1, 31, 0) # no exception + datetime(2000, 1, 31, 23) # no exception + self.assertRaises(ValueError, datetime, 2000, 1, 31, -1) + self.assertRaises(ValueError, datetime, 2000, 1, 31, 24) + # bad minutes + datetime(2000, 1, 31, 23, 0) # no exception + datetime(2000, 1, 31, 23, 59) # no exception + self.assertRaises(ValueError, datetime, 2000, 1, 31, 23, -1) + self.assertRaises(ValueError, datetime, 2000, 1, 31, 23, 60) + # bad seconds + datetime(2000, 1, 31, 23, 59, 0) # no exception + datetime(2000, 1, 31, 23, 59, 59) # no exception + self.assertRaises(ValueError, datetime, 2000, 1, 31, 23, 59, -1) + self.assertRaises(ValueError, datetime, 2000, 1, 31, 23, 59, 60) + def test_suite(): s1 = unittest.makeSuite(TestDateTime, 'test')
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4