symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_structseq.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 import unittest
       
     2 from test import test_support
       
     3 
       
     4 import time
       
     5 
       
     6 class StructSeqTest(unittest.TestCase):
       
     7 
       
     8     def test_tuple(self):
       
     9         t = time.gmtime()
       
    10         astuple = tuple(t)
       
    11         self.assertEqual(len(t), len(astuple))
       
    12         self.assertEqual(t, astuple)
       
    13 
       
    14         # Check that slicing works the same way; at one point, slicing t[i:j] with
       
    15         # 0 < i < j could produce NULLs in the result.
       
    16         for i in xrange(-len(t), len(t)):
       
    17             self.assertEqual(t[i:], astuple[i:])
       
    18             for j in xrange(-len(t), len(t)):
       
    19                 self.assertEqual(t[i:j], astuple[i:j])
       
    20 
       
    21         for j in xrange(-len(t), len(t)):
       
    22             self.assertEqual(t[:j], astuple[:j])
       
    23 
       
    24         self.assertRaises(IndexError, t.__getitem__, -len(t)-1)
       
    25         self.assertRaises(IndexError, t.__getitem__, len(t))
       
    26         for i in xrange(-len(t), len(t)-1):
       
    27             self.assertEqual(t[i], astuple[i])
       
    28 
       
    29     def test_repr(self):
       
    30         t = time.gmtime()
       
    31         self.assert_(repr(t))
       
    32         t = time.gmtime(0)
       
    33         self.assertEqual(repr(t),
       
    34             "time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, "
       
    35             "tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)")
       
    36 
       
    37     def test_concat(self):
       
    38         t1 = time.gmtime()
       
    39         t2 = t1 + tuple(t1)
       
    40         for i in xrange(len(t1)):
       
    41             self.assertEqual(t2[i], t2[i+len(t1)])
       
    42 
       
    43     def test_repeat(self):
       
    44         t1 = time.gmtime()
       
    45         t2 = 3 * t1
       
    46         for i in xrange(len(t1)):
       
    47             self.assertEqual(t2[i], t2[i+len(t1)])
       
    48             self.assertEqual(t2[i], t2[i+2*len(t1)])
       
    49 
       
    50     def test_contains(self):
       
    51         t1 = time.gmtime()
       
    52         for item in t1:
       
    53             self.assert_(item in t1)
       
    54         self.assert_(-42 not in t1)
       
    55 
       
    56     def test_hash(self):
       
    57         t1 = time.gmtime()
       
    58         self.assertEqual(hash(t1), hash(tuple(t1)))
       
    59 
       
    60     def test_cmp(self):
       
    61         t1 = time.gmtime()
       
    62         t2 = type(t1)(t1)
       
    63         self.assertEqual(t1, t2)
       
    64         self.assert_(not (t1 < t2))
       
    65         self.assert_(t1 <= t2)
       
    66         self.assert_(not (t1 > t2))
       
    67         self.assert_(t1 >= t2)
       
    68         self.assert_(not (t1 != t2))
       
    69 
       
    70     def test_fields(self):
       
    71         t = time.gmtime()
       
    72         self.assertEqual(len(t), t.n_fields)
       
    73         self.assertEqual(t.n_fields, t.n_sequence_fields+t.n_unnamed_fields)
       
    74 
       
    75     def test_constructor(self):
       
    76         t = time.struct_time
       
    77 
       
    78         self.assertRaises(TypeError, t)
       
    79         self.assertRaises(TypeError, t, None)
       
    80         self.assertRaises(TypeError, t, "123")
       
    81         self.assertRaises(TypeError, t, "123", dict={})
       
    82         self.assertRaises(TypeError, t, "123456789", dict=None)
       
    83 
       
    84         s = "123456789"
       
    85         self.assertEqual("".join(t(s)), s)
       
    86 
       
    87     def test_eviltuple(self):
       
    88         class Exc(Exception):
       
    89             pass
       
    90 
       
    91         # Devious code could crash structseqs' contructors
       
    92         class C:
       
    93             def __getitem__(self, i):
       
    94                 raise Exc
       
    95             def __len__(self):
       
    96                 return 9
       
    97 
       
    98         self.assertRaises(Exc, time.struct_time, C())
       
    99 
       
   100     def test_reduce(self):
       
   101         t = time.gmtime()
       
   102         x = t.__reduce__()
       
   103 
       
   104     def test_extended_getslice(self):
       
   105         # Test extended slicing by comparing with list slicing.
       
   106         t = time.gmtime()
       
   107         L = list(t)
       
   108         indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
       
   109         for start in indices:
       
   110             for stop in indices:
       
   111                 # Skip step 0 (invalid)
       
   112                 for step in indices[1:]:
       
   113                     self.assertEqual(list(t[start:stop:step]),
       
   114                                      L[start:stop:step])
       
   115 
       
   116 def test_main():
       
   117     test_support.run_unittest(StructSeqTest)
       
   118 
       
   119 if __name__ == "__main__":
       
   120     test_main()