~ubuntu-branches/ubuntu/karmic/pypy/karmic

« back to all changes in this revision

Viewing changes to lib-python/2.4.1/test/test_augassign.py

  • Committer: Bazaar Package Importer
  • Author(s): Alexandre Fayolle
  • Date: 2007-04-13 09:33:09 UTC
  • Revision ID: james.westby@ubuntu.com-20070413093309-yoojh4jcoocu2krz
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Augmented assignment test.
 
2
 
 
3
x = 2
 
4
x += 1
 
5
x *= 2
 
6
x **= 2
 
7
x -= 8
 
8
x //= 2
 
9
x //= 1
 
10
x %= 12
 
11
x &= 2
 
12
x |= 5
 
13
x ^= 1
 
14
 
 
15
print x
 
16
 
 
17
x = [2]
 
18
x[0] += 1
 
19
x[0] *= 2
 
20
x[0] **= 2
 
21
x[0] -= 8
 
22
x[0] //= 2
 
23
x[0] //= 2
 
24
x[0] %= 12
 
25
x[0] &= 2
 
26
x[0] |= 5
 
27
x[0] ^= 1
 
28
 
 
29
print x
 
30
 
 
31
x = {0: 2}
 
32
x[0] += 1
 
33
x[0] *= 2
 
34
x[0] **= 2
 
35
x[0] -= 8
 
36
x[0] //= 2
 
37
x[0] //= 1
 
38
x[0] %= 12
 
39
x[0] &= 2
 
40
x[0] |= 5
 
41
x[0] ^= 1
 
42
 
 
43
print x[0]
 
44
 
 
45
x = [1,2]
 
46
x += [3,4]
 
47
x *= 2
 
48
 
 
49
print x
 
50
 
 
51
x = [1, 2, 3]
 
52
y = x
 
53
x[1:2] *= 2
 
54
y[1:2] += [1]
 
55
 
 
56
print x
 
57
print x is y
 
58
 
 
59
class aug_test:
 
60
    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)
 
66
 
 
67
 
 
68
class aug_test2(aug_test):
 
69
    def __iadd__(self, val):
 
70
        self.val = self.val + val
 
71
        return self
 
72
 
 
73
class aug_test3(aug_test):
 
74
    def __iadd__(self, val):
 
75
        return aug_test3(self.val + val)
 
76
 
 
77
x = aug_test(1)
 
78
y = x
 
79
x += 10
 
80
 
 
81
print isinstance(x, aug_test)
 
82
print y is not x
 
83
print x.val
 
84
 
 
85
x = aug_test2(2)
 
86
y = x
 
87
x += 10
 
88
 
 
89
print y is x
 
90
print x.val
 
91
 
 
92
x = aug_test3(3)
 
93
y = x
 
94
x += 10
 
95
 
 
96
print isinstance(x, aug_test3)
 
97
print y is not x
 
98
print x.val
 
99
 
 
100
class testall:
 
101
 
 
102
    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
 
109
 
 
110
    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
 
117
 
 
118
    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
 
125
 
 
126
    def __div__(self, val):
 
127
        print "__div__ called"
 
128
    def __rdiv__(self, val):
 
129
        print "__rdiv__ called"
 
130
    def __idiv__(self, val):
 
131
        print "__idiv__ called"
 
132
        return self
 
133
 
 
134
    def __floordiv__(self, val):
 
135
        print "__floordiv__ called"
 
136
        return self
 
137
    def __ifloordiv__(self, val):
 
138
        print "__ifloordiv__ called"
 
139
        return self
 
140
    def __rfloordiv__(self, val):
 
141
        print "__rfloordiv__ called"
 
142
        return self
 
143
 
 
144
    def __truediv__(self, val):
 
145
        print "__truediv__ called"
 
146
        return self
 
147
    def __itruediv__(self, val):
 
148
        print "__itruediv__ called"
 
149
        return self
 
150
 
 
151
    def __mod__(self, val):
 
152
        print "__mod__ called"
 
153
    def __rmod__(self, val):
 
154
        print "__rmod__ called"
 
155
    def __imod__(self, val):
 
156
        print "__imod__ called"
 
157
        return self
 
158
 
 
159
    def __pow__(self, val):
 
160
        print "__pow__ called"
 
161
    def __rpow__(self, val):
 
162
        print "__rpow__ called"
 
163
    def __ipow__(self, val):
 
164
        print "__ipow__ called"
 
165
        return self
 
166
 
 
167
    def __or__(self, val):
 
168
        print "__or__ called"
 
169
    def __ror__(self, val):
 
170
        print "__ror__ called"
 
171
    def __ior__(self, val):
 
172
        print "__ior__ called"
 
173
        return self
 
174
 
 
175
    def __and__(self, val):
 
176
        print "__and__ called"
 
177
    def __rand__(self, val):
 
178
        print "__rand__ called"
 
179
    def __iand__(self, val):
 
180
        print "__iand__ called"
 
181
        return self
 
182
 
 
183
    def __xor__(self, val):
 
184
        print "__xor__ called"
 
185
    def __rxor__(self, val):
 
186
        print "__rxor__ called"
 
187
    def __ixor__(self, val):
 
188
        print "__ixor__ called"
 
189
        return self
 
190
 
 
191
    def __rshift__(self, val):
 
192
        print "__rshift__ called"
 
193
    def __rrshift__(self, val):
 
194
        print "__rrshift__ called"
 
195
    def __irshift__(self, val):
 
196
        print "__irshift__ called"
 
197
        return self
 
198
 
 
199
    def __lshift__(self, val):
 
200
        print "__lshift__ called"
 
201
    def __rlshift__(self, val):
 
202
        print "__rlshift__ called"
 
203
    def __ilshift__(self, val):
 
204
        print "__ilshift__ called"
 
205
        return self
 
206
 
 
207
x = testall()
 
208
x + 1
 
209
1 + x
 
210
x += 1
 
211
 
 
212
x - 1
 
213
1 - x
 
214
x -= 1
 
215
 
 
216
x * 1
 
217
1 * x
 
218
x *= 1
 
219
 
 
220
if 1/2 == 0:
 
221
    x / 1
 
222
    1 / x
 
223
    x /= 1
 
224
else:
 
225
    # True division is in effect, so "/" doesn't map to __div__ etc;
 
226
    # but the canned expected-output file requires that those get called.
 
227
    x.__div__(1)
 
228
    x.__rdiv__(1)
 
229
    x.__idiv__(1)
 
230
 
 
231
x // 1
 
232
1 // x
 
233
x //= 1
 
234
 
 
235
x % 1
 
236
1 % x
 
237
x %= 1
 
238
 
 
239
x ** 1
 
240
1 ** x
 
241
x **= 1
 
242
 
 
243
x | 1
 
244
1 | x
 
245
x |= 1
 
246
 
 
247
x & 1
 
248
1 & x
 
249
x &= 1
 
250
 
 
251
x ^ 1
 
252
1 ^ x
 
253
x ^= 1
 
254
 
 
255
x >> 1
 
256
1 >> x
 
257
x >>= 1
 
258
 
 
259
x << 1
 
260
1 << x
 
261
x <<= 1