blob: 228e03a3100b572287cade390741f138401af207 [file] [log] [blame]
Thomas Wouters104a7bc2000-08-24 20:14:10 +00001# Augmented assignment test.
2
3x = 2
4x += 1
5x *= 2
6x **= 2
7x -= 8
Neal Norwitzbcc0db82006-03-24 08:14:36 +00008x /= 2
Jeremy Hylton4de8df92001-08-29 17:50:27 +00009x //= 1
Thomas Wouters104a7bc2000-08-24 20:14:10 +000010x %= 12
11x &= 2
12x |= 5
13x ^= 1
14
15print x
16
17x = [2]
18x[0] += 1
19x[0] *= 2
20x[0] **= 2
21x[0] -= 8
Neal Norwitzbcc0db82006-03-24 08:14:36 +000022x[0] /= 2
Jeremy Hylton4de8df92001-08-29 17:50:27 +000023x[0] //= 2
Thomas Wouters104a7bc2000-08-24 20:14:10 +000024x[0] %= 12
25x[0] &= 2
26x[0] |= 5
27x[0] ^= 1
28
29print x
30
31x = {0: 2}
32x[0] += 1
33x[0] *= 2
34x[0] **= 2
35x[0] -= 8
Neal Norwitzbcc0db82006-03-24 08:14:36 +000036x[0] /= 2
Jeremy Hylton4de8df92001-08-29 17:50:27 +000037x[0] //= 1
Thomas Wouters104a7bc2000-08-24 20:14:10 +000038x[0] %= 12
39x[0] &= 2
40x[0] |= 5
41x[0] ^= 1
42
43print x[0]
44
45x = [1,2]
46x += [3,4]
47x *= 2
48
49print x
50
51x = [1, 2, 3]
52y = x
53x[1:2] *= 2
54y[1:2] += [1]
55
56print x
57print x is y
58
59class aug_test:
Fred Drake004d5e62000-10-23 17:22:08 +000060 def __init__(self, value):
61 self.val = value
62 def __radd__(self, val):
63 return self.val + val
64 def __add__(self, val):
65 return aug_test(self.val + val)
Thomas Wouters104a7bc2000-08-24 20:14:10 +000066
67
68class aug_test2(aug_test):
Fred Drake004d5e62000-10-23 17:22:08 +000069 def __iadd__(self, val):
70 self.val = self.val + val
71 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +000072
73class aug_test3(aug_test):
Fred Drake004d5e62000-10-23 17:22:08 +000074 def __iadd__(self, val):
75 return aug_test3(self.val + val)
Thomas Wouters104a7bc2000-08-24 20:14:10 +000076
77x = aug_test(1)
78y = x
79x += 10
80
81print isinstance(x, aug_test)
Fred Drake004d5e62000-10-23 17:22:08 +000082print y is not x
Thomas Wouters104a7bc2000-08-24 20:14:10 +000083print x.val
84
85x = aug_test2(2)
86y = x
87x += 10
88
89print y is x
90print x.val
91
92x = aug_test3(3)
93y = x
94x += 10
95
96print isinstance(x, aug_test3)
97print y is not x
98print x.val
99
100class testall:
101
Fred Drake004d5e62000-10-23 17:22:08 +0000102 def __add__(self, val):
103 print "__add__ called"
104 def __radd__(self, val):
105 print "__radd__ called"
106 def __iadd__(self, val):
107 print "__iadd__ called"
108 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000109
Fred Drake004d5e62000-10-23 17:22:08 +0000110 def __sub__(self, val):
111 print "__sub__ called"
112 def __rsub__(self, val):
113 print "__rsub__ called"
114 def __isub__(self, val):
115 print "__isub__ called"
116 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000117
Fred Drake004d5e62000-10-23 17:22:08 +0000118 def __mul__(self, val):
119 print "__mul__ called"
120 def __rmul__(self, val):
121 print "__rmul__ called"
122 def __imul__(self, val):
123 print "__imul__ called"
124 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000125
Jeremy Hylton4de8df92001-08-29 17:50:27 +0000126 def __floordiv__(self, val):
127 print "__floordiv__ called"
128 return self
129 def __ifloordiv__(self, val):
130 print "__ifloordiv__ called"
131 return self
132 def __rfloordiv__(self, val):
133 print "__rfloordiv__ called"
134 return self
135
136 def __truediv__(self, val):
137 print "__truediv__ called"
138 return self
139 def __itruediv__(self, val):
140 print "__itruediv__ called"
141 return self
Neal Norwitzbcc0db82006-03-24 08:14:36 +0000142 def __rtruediv__(self, val):
143 print "__rtruediv__ called"
144 return self
Jeremy Hylton4de8df92001-08-29 17:50:27 +0000145
Fred Drake004d5e62000-10-23 17:22:08 +0000146 def __mod__(self, val):
147 print "__mod__ called"
148 def __rmod__(self, val):
149 print "__rmod__ called"
150 def __imod__(self, val):
151 print "__imod__ called"
152 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000153
Fred Drake004d5e62000-10-23 17:22:08 +0000154 def __pow__(self, val):
155 print "__pow__ called"
156 def __rpow__(self, val):
157 print "__rpow__ called"
158 def __ipow__(self, val):
159 print "__ipow__ called"
160 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000161
Fred Drake004d5e62000-10-23 17:22:08 +0000162 def __or__(self, val):
163 print "__or__ called"
164 def __ror__(self, val):
165 print "__ror__ called"
166 def __ior__(self, val):
167 print "__ior__ called"
168 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000169
Fred Drake004d5e62000-10-23 17:22:08 +0000170 def __and__(self, val):
171 print "__and__ called"
172 def __rand__(self, val):
173 print "__rand__ called"
174 def __iand__(self, val):
175 print "__iand__ called"
176 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000177
Fred Drake004d5e62000-10-23 17:22:08 +0000178 def __xor__(self, val):
179 print "__xor__ called"
180 def __rxor__(self, val):
181 print "__rxor__ called"
182 def __ixor__(self, val):
183 print "__ixor__ called"
184 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000185
Fred Drake004d5e62000-10-23 17:22:08 +0000186 def __rshift__(self, val):
187 print "__rshift__ called"
188 def __rrshift__(self, val):
189 print "__rrshift__ called"
190 def __irshift__(self, val):
191 print "__irshift__ called"
192 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000193
Fred Drake004d5e62000-10-23 17:22:08 +0000194 def __lshift__(self, val):
195 print "__lshift__ called"
196 def __rlshift__(self, val):
197 print "__rlshift__ called"
198 def __ilshift__(self, val):
199 print "__ilshift__ called"
200 return self
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000201
202x = testall()
203x + 1
2041 + x
205x += 1
206
207x - 1
2081 - x
209x -= 1
210
211x * 1
2121 * x
213x *= 1
214
Neal Norwitzbcc0db82006-03-24 08:14:36 +0000215x / 1
2161 / x
217x /= 1
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000218
Jeremy Hylton4de8df92001-08-29 17:50:27 +0000219x // 1
2201 // x
221x //= 1
222
Thomas Wouters104a7bc2000-08-24 20:14:10 +0000223x % 1
2241 % x
225x %= 1
226
227x ** 1
2281 ** x
229x **= 1
230
231x | 1
2321 | x
233x |= 1
234
235x & 1
2361 & x
237x &= 1
238
239x ^ 1
2401 ^ x
241x ^= 1
242
243x >> 1
2441 >> x
245x >>= 1
246
247x << 1
2481 << x
249x <<= 1