diff options
author | Thomas Wouters <thomas@python.org> | 2000-08-24 20:14:10 (GMT) |
---|---|---|
committer | Thomas Wouters <thomas@python.org> | 2000-08-24 20:14:10 (GMT) |
commit | 104a7bcc28f96c6192815e82971d660c9910c16b (patch) | |
tree | 9154c2e6b47cc4721c648457e7762e804ca97e2e /Lib/test/test_augassign.py | |
parent | 434d0828d81855692d45c3fdc0905a67c17d83ba (diff) | |
download | cpython-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.py | 232 |
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 + |