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