mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 02:15:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			146 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from test import test_support
 | |
| import time
 | |
| import unittest
 | |
| 
 | |
| 
 | |
| class TimeTestCase(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         self.t = time.time()
 | |
| 
 | |
|     def test_data_attributes(self):
 | |
|         time.altzone
 | |
|         time.daylight
 | |
|         time.timezone
 | |
|         time.tzname
 | |
| 
 | |
|     def test_clock(self):
 | |
|         time.clock()
 | |
| 
 | |
|     def test_conversions(self):
 | |
|         self.assert_(time.ctime(self.t)
 | |
|                      == time.asctime(time.localtime(self.t)))
 | |
|         self.assert_(long(time.mktime(time.localtime(self.t)))
 | |
|                      == long(self.t))
 | |
| 
 | |
|     def test_sleep(self):
 | |
|         time.sleep(1.2)
 | |
| 
 | |
|     def test_strftime(self):
 | |
|         tt = time.gmtime(self.t)
 | |
|         for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
 | |
|                           'j', 'm', 'M', 'p', 'S',
 | |
|                           'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
 | |
|             format = ' %' + directive
 | |
|             try:
 | |
|                 time.strftime(format, tt)
 | |
|             except ValueError:
 | |
|                 self.fail('conversion specifier: %r failed.' % format)
 | |
| 
 | |
|     def test_strptime(self):
 | |
|         tt = time.gmtime(self.t)
 | |
|         for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
 | |
|                           'j', 'm', 'M', 'p', 'S',
 | |
|                           'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
 | |
|             format = ' %' + directive
 | |
|             try:
 | |
|                 time.strptime(time.strftime(format, tt), format)
 | |
|             except ValueError:
 | |
|                 self.fail('conversion specifier: %r failed.' % format)
 | |
| 
 | |
|     def test_asctime(self):
 | |
|         time.asctime(time.gmtime(self.t))
 | |
|         self.assertRaises(TypeError, time.asctime, 0)
 | |
| 
 | |
|     def test_tzset(self):
 | |
|         if not hasattr(time, "tzset"):
 | |
|             return # Can't test this; don't want the test suite to fail
 | |
| 
 | |
|         from os import environ
 | |
| 
 | |
|         # Epoch time of midnight Dec 25th 2002. Never DST in northern 
 | |
|         # hemisphere.
 | |
|         xmas2002 = 1040774400.0 
 | |
| 
 | |
|         org_TZ = environ.get('TZ',None)
 | |
|         try:
 | |
| 
 | |
|             # Make sure we can switch to UTC time and results are correct
 | |
|             # Note that unknown timezones default to UTC.
 | |
|             for tz in ('UTC','GMT','Luna/Tycho'):
 | |
|                 environ['TZ'] = 'US/Eastern'
 | |
|                 time.tzset()
 | |
|                 environ['TZ'] = tz
 | |
|                 time.tzset()
 | |
|                 self.failUnlessEqual(
 | |
|                     time.gmtime(xmas2002),time.localtime(xmas2002)
 | |
|                     )
 | |
|                 self.failUnlessEqual(time.timezone,time.altzone)
 | |
|                 self.failUnlessEqual(time.daylight,0) 
 | |
|                 self.failUnlessEqual(time.timezone,0)
 | |
|                 self.failUnlessEqual(time.altzone,0)
 | |
|                 self.failUnlessEqual(time.localtime(xmas2002).tm_isdst,0)
 | |
| 
 | |
|             # Make sure we can switch to US/Eastern
 | |
|             environ['TZ'] = 'US/Eastern'
 | |
|             time.tzset()
 | |
|             self.failIfEqual(time.gmtime(xmas2002),time.localtime(xmas2002))
 | |
|             self.failUnlessEqual(time.tzname,('EST','EDT'))
 | |
|             self.failUnlessEqual(len(time.tzname),2)
 | |
|             self.failUnlessEqual(time.daylight,1)
 | |
|             self.failUnlessEqual(time.timezone,18000)
 | |
|             self.failUnlessEqual(time.altzone,14400)
 | |
|             self.failUnlessEqual(time.localtime(xmas2002).tm_isdst,0)
 | |
|             self.failUnlessEqual(len(time.tzname),2)
 | |
| 
 | |
|             # Now go to the southern hemisphere. We want somewhere all OS's
 | |
|             # know about that has DST.
 | |
|             environ['TZ'] = 'Australia/Melbourne'
 | |
|             time.tzset()
 | |
|             self.failIfEqual(time.gmtime(xmas2002),time.localtime(xmas2002))
 | |
|             self.failUnless(time.tzname[0] in ('EST','AEST'))
 | |
|             self.failUnless(time.tzname[1] in ('EST','EDT','AEDT'))
 | |
|             self.failUnlessEqual(len(time.tzname),2)
 | |
|             self.failUnlessEqual(time.daylight,1)
 | |
|             self.failUnlessEqual(time.timezone,-36000)
 | |
|             self.failUnlessEqual(time.altzone,-39600)
 | |
|             self.failUnlessEqual(time.localtime(xmas2002).tm_isdst,1)
 | |
| 
 | |
|             # Get some times from a timezone that isn't wallclock timezone
 | |
|             del environ['TZ']
 | |
|             time.tzset()
 | |
|             if time.timezone == 0:
 | |
|                 environ['TZ'] = 'US/Eastern'
 | |
|             else:
 | |
|                 environ['TZ'] = 'UTC'
 | |
|             time.tzset()
 | |
|             nonlocal = time.localtime(xmas2002)
 | |
| 
 | |
|             # Then the same time in wallclock timezone
 | |
|             del environ['TZ']
 | |
|             time.tzset()
 | |
|             local = time.localtime(xmas2002)
 | |
| 
 | |
|             # And make sure they arn't the same
 | |
|             self.failIfEqual(local,nonlocal) 
 | |
| 
 | |
|             # Do some basic sanity checking after wallclock time set
 | |
|             self.failUnlessEqual(len(time.tzname),2)
 | |
|             time.daylight
 | |
|             time.timezone
 | |
|             time.altzone
 | |
|         finally:
 | |
|             # Repair TZ environment variable in case any other tests
 | |
|             # rely on it.
 | |
|             if org_TZ is not None:
 | |
|                 environ['TZ'] = org_TZ
 | |
|             elif environ.has_key('TZ'):
 | |
|                 del environ['TZ']
 | |
|             
 | |
| 
 | |
| def test_main():
 | |
|     test_support.run_unittest(TimeTestCase)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     test_main()
 | 
