summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_augassign.py
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2000-08-24 20:14:10 (GMT)
committerThomas Wouters <thomas@python.org>2000-08-24 20:14:10 (GMT)
commit104a7bcc28f96c6192815e82971d660c9910c16b (patch)
tree9154c2e6b47cc4721c648457e7762e804ca97e2e /Lib/test/test_augassign.py
parent434d0828d81855692d45c3fdc0905a67c17d83ba (diff)
downloadcpython-104a7bcc28f96c6192815e82971d660c9910c16b.zip
cpython-104a7bcc28f96c6192815e82971d660c9910c16b.tar.gz
cpython-104a7bcc28f96c6192815e82971d660c9910c16b.tar.bz2
Support for augmented assignment in the UserList, UserDict, UserString and
rfc822 (Addresslist) modules. Also a preliminary testcase for augmented assignment, which should actually be merged with the test_class testcase I added last week.
Diffstat (limited to 'Lib/test/test_augassign.py')
-rw-r--r--Lib/test/test_augassign.py232
1 files changed, 232 insertions, 0 deletions
diff --git a/Lib/test/test_augassign.py b/Lib/test/test_augassign.py
new file mode 100644
index 0000000..a01195e
--- /dev/null
+++ b/Lib/test/test_augassign.py
@@ -0,0 +1,232 @@
+
+# Augmented assignment test.
+
+x = 2
+x += 1
+x *= 2
+x **= 2
+x -= 8
+x /= 2
+x %= 12
+x &= 2
+x |= 5
+x ^= 1
+
+print x
+
+x = [2]
+x[0] += 1
+x[0] *= 2
+x[0] **= 2
+x[0] -= 8
+x[0] /= 2
+x[0] %= 12
+x[0] &= 2
+x[0] |= 5
+x[0] ^= 1
+
+print x
+
+x = {0: 2}
+x[0] += 1
+x[0] *= 2
+x[0] **= 2
+x[0] -= 8
+x[0] /= 2
+x[0] %= 12
+x[0] &= 2
+x[0] |= 5
+x[0] ^= 1
+
+print x[0]
+
+x = [1,2]
+x += [3,4]
+x *= 2
+
+print x
+
+x = [1, 2, 3]
+y = x
+x[1:2] *= 2
+y[1:2] += [1]
+
+print x
+print x is y
+
+class aug_test:
+ def __init__(self, value):
+ self.val = value
+ def __radd__(self, val):
+ return self.val + val
+ def __add__(self, val):
+ return aug_test(self.val + val)
+
+
+class aug_test2(aug_test):
+ def __iadd__(self, val):
+ self.val = self.val + val
+ return self
+
+class aug_test3(aug_test):
+ def __iadd__(self, val):
+ return aug_test3(self.val + val)
+
+x = aug_test(1)
+y = x
+x += 10
+
+print isinstance(x, aug_test)
+print y is not x
+print x.val
+
+x = aug_test2(2)
+y = x
+x += 10
+
+print y is x
+print x.val
+
+x = aug_test3(3)
+y = x
+x += 10
+
+print isinstance(x, aug_test3)
+print y is not x
+print x.val
+
+class testall:
+
+ def __add__(self, val):
+ print "__add__ called"
+ def __radd__(self, val):
+ print "__radd__ called"
+ def __iadd__(self, val):
+ print "__iadd__ called"
+ return self
+
+ def __sub__(self, val):
+ print "__sub__ called"
+ def __rsub__(self, val):
+ print "__rsub__ called"
+ def __isub__(self, val):
+ print "__isub__ called"
+ return self
+
+ def __mul__(self, val):
+ print "__mul__ called"
+ def __rmul__(self, val):
+ print "__rmul__ called"
+ def __imul__(self, val):
+ print "__imul__ called"
+ return self
+
+ def __div__(self, val):
+ print "__div__ called"
+ def __rdiv__(self, val):
+ print "__rdiv__ called"
+ def __idiv__(self, val):
+ print "__idiv__ called"
+ return self
+
+ def __mod__(self, val):
+ print "__mod__ called"
+ def __rmod__(self, val):
+ print "__rmod__ called"
+ def __imod__(self, val):
+ print "__imod__ called"
+ return self
+
+ def __pow__(self, val):
+ print "__pow__ called"
+ def __rpow__(self, val):
+ print "__rpow__ called"
+ def __ipow__(self, val):
+ print "__ipow__ called"
+ return self
+
+ def __or__(self, val):
+ print "__or__ called"
+ def __ror__(self, val):
+ print "__ror__ called"
+ def __ior__(self, val):
+ print "__ior__ called"
+ return self
+
+ def __and__(self, val):
+ print "__and__ called"
+ def __rand__(self, val):
+ print "__rand__ called"
+ def __iand__(self, val):
+ print "__iand__ called"
+ return self
+
+ def __xor__(self, val):
+ print "__xor__ called"
+ def __rxor__(self, val):
+ print "__rxor__ called"
+ def __ixor__(self, val):
+ print "__ixor__ called"
+ return self
+
+ def __rshift__(self, val):
+ print "__rshift__ called"
+ def __rrshift__(self, val):
+ print "__rrshift__ called"
+ def __irshift__(self, val):
+ print "__irshift__ called"
+ return self
+
+ def __lshift__(self, val):
+ print "__lshift__ called"
+ def __rlshift__(self, val):
+ print "__rlshift__ called"
+ def __ilshift__(self, val):
+ print "__ilshift__ called"
+ return self
+
+x = testall()
+x + 1
+1 + x
+x += 1
+
+x - 1
+1 - x
+x -= 1
+
+x * 1
+1 * x
+x *= 1
+
+x / 1
+1 / x
+x /= 1
+
+x % 1
+1 % x
+x %= 1
+
+x ** 1
+1 ** x
+x **= 1
+
+x | 1
+1 | x
+x |= 1
+
+x & 1
+1 & x
+x &= 1
+
+x ^ 1
+1 ^ x
+x ^= 1
+
+x >> 1
+1 >> x
+x >>= 1
+
+x << 1
+1 << x
+x <<= 1
+