diff options
| author | Damien George <damien@micropython.org> | 2020-09-17 13:37:31 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2020-09-18 18:40:42 +1000 |
| commit | 42342fa3cb30e2eac56ceb1d21b4eb60a0f406f3 (patch) | |
| tree | 6bb1fb0f5d62e8d22c208651532b9983f27eb2cb /tests/basics/class_inplace_op2.py | |
| parent | c410a86814abde8ce05aaf46383f38ef9f981a8c (diff) | |
tests/basics: Add test for MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS ops.
And enable this feature on unix, the coverage variant. The .exp test file
is needed so the test can run on CPython versions prior to "@=" operator
support.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests/basics/class_inplace_op2.py')
| -rw-r--r-- | tests/basics/class_inplace_op2.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tests/basics/class_inplace_op2.py b/tests/basics/class_inplace_op2.py new file mode 100644 index 000000000..0e3f2add4 --- /dev/null +++ b/tests/basics/class_inplace_op2.py @@ -0,0 +1,73 @@ +# Test inplace special methods enabled by MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS + + +class A: + def __imul__(self, other): + print("__imul__") + return self + + def __imatmul__(self, other): + print("__imatmul__") + return self + + def __ifloordiv__(self, other): + print("__ifloordiv__") + return self + + def __itruediv__(self, other): + print("__itruediv__") + return self + + def __imod__(self, other): + print("__imod__") + return self + + def __ipow__(self, other): + print("__ipow__") + return self + + def __ior__(self, other): + print("__ior__") + return self + + def __ixor__(self, other): + print("__ixor__") + return self + + def __iand__(self, other): + print("__iand__") + return self + + def __ilshift__(self, other): + print("__ilshift__") + return self + + def __irshift__(self, other): + print("__irshift__") + return self + + +a = A() + +try: + a *= None +except TypeError: + print("SKIP") + raise SystemExit + +a @= None +a //= None +a /= None +a %= None +a **= None +a |= None +a ^= None +a &= None +a <<= None +a >>= None + +# Normal operator should not fallback to inplace operator +try: + a * None +except TypeError: + print("TypeError") |
