A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-checkins/2002-March/024686.html below:

[Python-checkins] CVS: python/nondist/sandbox/datetime datetime.py,1.5,1.6 test_datetime.py,1.2,1.3

[Python-checkins] CVS: python/nondist/sandbox/datetime datetime.py,1.5,1.6 test_datetime.py,1.2,1.3Tim Peters tim_one@users.sourceforge.net
Fri, 01 Mar 2002 15:53:49 -0800
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