home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / test_time.py < prev    next >
Text File  |  2003-12-30  |  5KB  |  130 lines

  1. from test import test_support
  2. import time
  3. import unittest
  4.  
  5.  
  6. class TimeTestCase(unittest.TestCase):
  7.  
  8.     def setUp(self):
  9.         self.t = time.time()
  10.  
  11.     def test_data_attributes(self):
  12.         time.altzone
  13.         time.daylight
  14.         time.timezone
  15.         time.tzname
  16.  
  17.     def test_clock(self):
  18.         time.clock()
  19.  
  20.     def test_conversions(self):
  21.         self.assert_(time.ctime(self.t)
  22.                      == time.asctime(time.localtime(self.t)))
  23.         self.assert_(long(time.mktime(time.localtime(self.t)))
  24.                      == long(self.t))
  25.  
  26.     def test_sleep(self):
  27.         time.sleep(1.2)
  28.  
  29.     def test_strftime(self):
  30.         tt = time.gmtime(self.t)
  31.         for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
  32.                           'j', 'm', 'M', 'p', 'S',
  33.                           'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
  34.             format = ' %' + directive
  35.             try:
  36.                 time.strftime(format, tt)
  37.             except ValueError:
  38.                 self.fail('conversion specifier: %r failed.' % format)
  39.  
  40.     def test_strptime(self):
  41.         tt = time.gmtime(self.t)
  42.         for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
  43.                           'j', 'm', 'M', 'p', 'S',
  44.                           'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
  45.             format = ' %' + directive
  46.             try:
  47.                 time.strptime(time.strftime(format, tt), format)
  48.             except ValueError:
  49.                 self.fail('conversion specifier: %r failed.' % format)
  50.  
  51.     def test_asctime(self):
  52.         time.asctime(time.gmtime(self.t))
  53.         self.assertRaises(TypeError, time.asctime, 0)
  54.  
  55.     def test_tzset(self):
  56.         if not hasattr(time, "tzset"):
  57.             return # Can't test this; don't want the test suite to fail
  58.  
  59.         from os import environ
  60.  
  61.         # Epoch time of midnight Dec 25th 2002. Never DST in northern
  62.         # hemisphere.
  63.         xmas2002 = 1040774400.0
  64.  
  65.         # These formats are correct for 2002, and possibly future years
  66.         # This format is the 'standard' as documented at:
  67.         # http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
  68.         # They are also documented in the tzset(3) man page on most Unix
  69.         # systems.
  70.         eastern = 'EST+05EDT,M4.1.0,M10.5.0'
  71.         victoria = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
  72.         utc='UTC+0'
  73.  
  74.         org_TZ = environ.get('TZ',None)
  75.         try:
  76.             # Make sure we can switch to UTC time and results are correct
  77.             # Note that unknown timezones default to UTC.
  78.             # Note that altzone is undefined in UTC, as there is no DST
  79.             environ['TZ'] = eastern
  80.             time.tzset()
  81.             environ['TZ'] = utc
  82.             time.tzset()
  83.             self.failUnlessEqual(
  84.                 time.gmtime(xmas2002), time.localtime(xmas2002)
  85.                 )
  86.             self.failUnlessEqual(time.daylight, 0)
  87.             self.failUnlessEqual(time.timezone, 0)
  88.             self.failUnlessEqual(time.localtime(xmas2002).tm_isdst, 0)
  89.  
  90.             # Make sure we can switch to US/Eastern
  91.             environ['TZ'] = eastern
  92.             time.tzset()
  93.             self.failIfEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
  94.             self.failUnlessEqual(time.tzname, ('EST', 'EDT'))
  95.             self.failUnlessEqual(len(time.tzname), 2)
  96.             self.failUnlessEqual(time.daylight, 1)
  97.             self.failUnlessEqual(time.timezone, 18000)
  98.             self.failUnlessEqual(time.altzone, 14400)
  99.             self.failUnlessEqual(time.localtime(xmas2002).tm_isdst, 0)
  100.             self.failUnlessEqual(len(time.tzname), 2)
  101.  
  102.             # Now go to the southern hemisphere.
  103.             environ['TZ'] = victoria
  104.             time.tzset()
  105.             self.failIfEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
  106.             self.failUnless(time.tzname[0] == 'AEST', str(time.tzname[0]))
  107.             self.failUnless(time.tzname[1] == 'AEDT', str(time.tzname[1]))
  108.             self.failUnlessEqual(len(time.tzname), 2)
  109.             self.failUnlessEqual(time.daylight, 1)
  110.             self.failUnlessEqual(time.timezone, -36000)
  111.             self.failUnlessEqual(time.altzone, -39600)
  112.             self.failUnlessEqual(time.localtime(xmas2002).tm_isdst, 1)
  113.  
  114.         finally:
  115.             # Repair TZ environment variable in case any other tests
  116.             # rely on it.
  117.             if org_TZ is not None:
  118.                 environ['TZ'] = org_TZ
  119.             elif environ.has_key('TZ'):
  120.                 del environ['TZ']
  121.             time.tzset()
  122.  
  123.  
  124. def test_main():
  125.     test_support.run_unittest(TimeTestCase)
  126.  
  127.  
  128. if __name__ == "__main__":
  129.     test_main()
  130.