]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unpack.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / test / test_unpack.py
1 doctests = """
2
3 Unpack tuple
4
5 >>> t = (1, 2, 3)
6 >>> a, b, c = t
7 >>> a == 1 and b == 2 and c == 3
8 True
9
10 Unpack list
11
12 >>> l = [4, 5, 6]
13 >>> a, b, c = l
14 >>> a == 4 and b == 5 and c == 6
15 True
16
17 Unpack implied tuple
18
19 >>> a, b, c = 7, 8, 9
20 >>> a == 7 and b == 8 and c == 9
21 True
22
23 Unpack string... fun!
24
25 >>> a, b, c = 'one'
26 >>> a == 'o' and b == 'n' and c == 'e'
27 True
28
29 Unpack generic sequence
30
31 >>> class Seq:
32 ... def __getitem__(self, i):
33 ... if i >= 0 and i < 3: return i
34 ... raise IndexError
35 ...
36 >>> a, b, c = Seq()
37 >>> a == 0 and b == 1 and c == 2
38 True
39
40 Single element unpacking, with extra syntax
41
42 >>> st = (99,)
43 >>> sl = [100]
44 >>> a, = st
45 >>> a
46 99
47 >>> b, = sl
48 >>> b
49 100
50
51 Now for some failures
52
53 Unpacking non-sequence
54
55 >>> a, b, c = 7
56 Traceback (most recent call last):
57 ...
58 TypeError: 'int' object is not iterable
59
60 Unpacking tuple of wrong size
61
62 >>> a, b = t
63 Traceback (most recent call last):
64 ...
65 ValueError: too many values to unpack
66
67 Unpacking tuple of wrong size
68
69 >>> a, b = l
70 Traceback (most recent call last):
71 ...
72 ValueError: too many values to unpack
73
74 Unpacking sequence too short
75
76 >>> a, b, c, d = Seq()
77 Traceback (most recent call last):
78 ...
79 ValueError: need more than 3 values to unpack
80
81 Unpacking sequence too long
82
83 >>> a, b = Seq()
84 Traceback (most recent call last):
85 ...
86 ValueError: too many values to unpack
87
88 Unpacking a sequence where the test for too long raises a different kind of
89 error
90
91 >>> class BozoError(Exception):
92 ... pass
93 ...
94 >>> class BadSeq:
95 ... def __getitem__(self, i):
96 ... if i >= 0 and i < 3:
97 ... return i
98 ... elif i == 3:
99 ... raise BozoError
100 ... else:
101 ... raise IndexError
102 ...
103
104 Trigger code while not expecting an IndexError (unpack sequence too long, wrong
105 error)
106
107 >>> a, b, c, d, e = BadSeq()
108 Traceback (most recent call last):
109 ...
110 BozoError
111
112 Trigger code while expecting an IndexError (unpack sequence too short, wrong
113 error)
114
115 >>> a, b, c = BadSeq()
116 Traceback (most recent call last):
117 ...
118 BozoError
119
120 """
121
122 __test__ = {'doctests' : doctests}
123
124 def test_main(verbose=False):
125 from test import test_support
126 from test import test_unpack
127 test_support.run_doctest(test_unpack, verbose)
128
129 if __name__ == "__main__":
130 test_main(verbose=True)