summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_augassign.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_augassign.py')
-rw-r--r--Lib/test/test_augassign.py566
1 files changed, 310 insertions, 256 deletions
diff --git a/Lib/test/test_augassign.py b/Lib/test/test_augassign.py
index 22cca44..0309d6e 100644
--- a/Lib/test/test_augassign.py
+++ b/Lib/test/test_augassign.py
@@ -1,258 +1,312 @@
# Augmented assignment test.
-x = 2
-x += 1
-x *= 2
-x **= 2
-x -= 8
-x %= 12
-x >>= 1
-x &= 2
-x |= 5
-x ^= 1
-x <<= 2
-x /= 2
-x //= 2
-
-print x
-print int(x)
-
-x = [2]
-x[0] += 1
-x[0] *= 2
-x[0] **= 2
-x[0] -= 8
-x[0] %= 12
-x[0] >>= 1
-x[0] &= 2
-x[0] |= 5
-x[0] ^= 1
-x[0] <<= 2
-x[0] /= 2
-x[0] //= 2
-
-print x
-print int(x[0])
-
-x = {0: 2}
-x[0] += 1
-x[0] *= 2
-x[0] **= 2
-x[0] -= 8
-x[0] %= 12
-x[0] >>= 1
-x[0] &= 2
-x[0] |= 5
-x[0] ^= 1
-x[0] <<= 2
-x[0] /= 2
-x[0] //= 2
-
-print x[0]
-print int(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 __floordiv__(self, val):
- print "__floordiv__ called"
- return self
- def __ifloordiv__(self, val):
- print "__ifloordiv__ called"
- return self
- def __rfloordiv__(self, val):
- print "__rfloordiv__ called"
- return self
-
- def __truediv__(self, val):
- print "__truediv__ called"
- return self
- def __itruediv__(self, val):
- print "__itruediv__ called"
- return self
- def __rtruediv__(self, val):
- print "__rtruediv__ 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
-
-x << 1
-1 << x
-x <<= 1
+from test.test_support import run_unittest
+import unittest
+
+
+class AugAssignTest(unittest.TestCase):
+ def testBasic(self):
+ x = 2
+ x += 1
+ x *= 2
+ x **= 2
+ x -= 8
+ x //= 5
+ x %= 3
+ x &= 2
+ x |= 5
+ x ^= 1
+ x /= 2
+ self.assertEquals(x, 3.0)
+
+ def testInList(self):
+ x = [2]
+ x[0] += 1
+ x[0] *= 2
+ x[0] **= 2
+ x[0] -= 8
+ x[0] //= 5
+ x[0] %= 3
+ x[0] &= 2
+ x[0] |= 5
+ x[0] ^= 1
+ x[0] /= 2
+ self.assertEquals(x[0], 3.0)
+
+ def testInDict(self):
+ x = {0: 2}
+ x[0] += 1
+ x[0] *= 2
+ x[0] **= 2
+ x[0] -= 8
+ x[0] //= 5
+ x[0] %= 3
+ x[0] &= 2
+ x[0] |= 5
+ x[0] ^= 1
+ x[0] /= 2
+ self.assertEquals(x[0], 3.0)
+
+ def testSequences(self):
+ x = [1,2]
+ x += [3,4]
+ x *= 2
+
+ self.assertEquals(x, [1, 2, 3, 4, 1, 2, 3, 4])
+
+ x = [1, 2, 3]
+ y = x
+ x[1:2] *= 2
+ y[1:2] += [1]
+
+ self.assertEquals(x, [1, 2, 1, 2, 3])
+ self.assert_(x is y)
+
+ def testCustomMethods1(self):
+
+ 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
+
+ self.assert_(isinstance(x, aug_test))
+ self.assert_(y is not x)
+ self.assertEquals(x.val, 11)
+
+ x = aug_test2(2)
+ y = x
+ x += 10
+
+ self.assert_(y is x)
+ self.assertEquals(x.val, 12)
+
+ x = aug_test3(3)
+ y = x
+ x += 10
+
+ self.assert_(isinstance(x, aug_test3))
+ self.assert_(y is not x)
+ self.assertEquals(x.val, 13)
+
+
+ def testCustomMethods2(test_self):
+ output = []
+
+ class testall:
+ def __add__(self, val):
+ output.append("__add__ called")
+ def __radd__(self, val):
+ output.append("__radd__ called")
+ def __iadd__(self, val):
+ output.append("__iadd__ called")
+ return self
+
+ def __sub__(self, val):
+ output.append("__sub__ called")
+ def __rsub__(self, val):
+ output.append("__rsub__ called")
+ def __isub__(self, val):
+ output.append("__isub__ called")
+ return self
+
+ def __mul__(self, val):
+ output.append("__mul__ called")
+ def __rmul__(self, val):
+ output.append("__rmul__ called")
+ def __imul__(self, val):
+ output.append("__imul__ called")
+ return self
+
+ def __div__(self, val):
+ output.append("__div__ called")
+ def __rdiv__(self, val):
+ output.append("__rdiv__ called")
+ def __idiv__(self, val):
+ output.append("__idiv__ called")
+ return self
+
+ def __floordiv__(self, val):
+ output.append("__floordiv__ called")
+ return self
+ def __ifloordiv__(self, val):
+ output.append("__ifloordiv__ called")
+ return self
+ def __rfloordiv__(self, val):
+ output.append("__rfloordiv__ called")
+ return self
+
+ def __truediv__(self, val):
+ output.append("__truediv__ called")
+ return self
+ def __rtruediv__(self, val):
+ output.append("__rtruediv__ called")
+ return self
+ def __itruediv__(self, val):
+ output.append("__itruediv__ called")
+ return self
+
+ def __mod__(self, val):
+ output.append("__mod__ called")
+ def __rmod__(self, val):
+ output.append("__rmod__ called")
+ def __imod__(self, val):
+ output.append("__imod__ called")
+ return self
+
+ def __pow__(self, val):
+ output.append("__pow__ called")
+ def __rpow__(self, val):
+ output.append("__rpow__ called")
+ def __ipow__(self, val):
+ output.append("__ipow__ called")
+ return self
+
+ def __or__(self, val):
+ output.append("__or__ called")
+ def __ror__(self, val):
+ output.append("__ror__ called")
+ def __ior__(self, val):
+ output.append("__ior__ called")
+ return self
+
+ def __and__(self, val):
+ output.append("__and__ called")
+ def __rand__(self, val):
+ output.append("__rand__ called")
+ def __iand__(self, val):
+ output.append("__iand__ called")
+ return self
+
+ def __xor__(self, val):
+ output.append("__xor__ called")
+ def __rxor__(self, val):
+ output.append("__rxor__ called")
+ def __ixor__(self, val):
+ output.append("__ixor__ called")
+ return self
+
+ def __rshift__(self, val):
+ output.append("__rshift__ called")
+ def __rrshift__(self, val):
+ output.append("__rrshift__ called")
+ def __irshift__(self, val):
+ output.append("__irshift__ called")
+ return self
+
+ def __lshift__(self, val):
+ output.append("__lshift__ called")
+ def __rlshift__(self, val):
+ output.append("__rlshift__ called")
+ def __ilshift__(self, val):
+ output.append("__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
+
+ x << 1
+ 1 << x
+ x <<= 1
+
+ test_self.assertEquals(output, '''\
+__add__ called
+__radd__ called
+__iadd__ called
+__sub__ called
+__rsub__ called
+__isub__ called
+__mul__ called
+__rmul__ called
+__imul__ called
+__truediv__ called
+__rtruediv__ called
+__itruediv__ called
+__floordiv__ called
+__rfloordiv__ called
+__ifloordiv__ called
+__mod__ called
+__rmod__ called
+__imod__ called
+__pow__ called
+__rpow__ called
+__ipow__ called
+__or__ called
+__ror__ called
+__ior__ called
+__and__ called
+__rand__ called
+__iand__ called
+__xor__ called
+__rxor__ called
+__ixor__ called
+__rshift__ called
+__rrshift__ called
+__irshift__ called
+__lshift__ called
+__rlshift__ called
+__ilshift__ called
+'''.splitlines())
+
+def test_main():
+ run_unittest(AugAssignTest)
+
+if __name__ == '__main__':
+ test_main()