mirror of
https://github.com/licsber/micropython.git
synced 2024-09-20 09:00:23 +08:00
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>
This commit is contained in:
parent
c410a86814
commit
42342fa3cb
@ -39,6 +39,7 @@
|
|||||||
#define MICROPY_WARNINGS_CATEGORY (1)
|
#define MICROPY_WARNINGS_CATEGORY (1)
|
||||||
#define MICROPY_MODULE_GETATTR (1)
|
#define MICROPY_MODULE_GETATTR (1)
|
||||||
#define MICROPY_PY_DELATTR_SETATTR (1)
|
#define MICROPY_PY_DELATTR_SETATTR (1)
|
||||||
|
#define MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS (1)
|
||||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
||||||
#define MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE (1)
|
#define MICROPY_PY_BUILTINS_MEMORYVIEW_ITEMSIZE (1)
|
||||||
#define MICROPY_PY_BUILTINS_NEXT2 (1)
|
#define MICROPY_PY_BUILTINS_NEXT2 (1)
|
||||||
|
73
tests/basics/class_inplace_op2.py
Normal file
73
tests/basics/class_inplace_op2.py
Normal file
@ -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")
|
12
tests/basics/class_inplace_op2.py.exp
Normal file
12
tests/basics/class_inplace_op2.py.exp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
__imul__
|
||||||
|
__imatmul__
|
||||||
|
__ifloordiv__
|
||||||
|
__itruediv__
|
||||||
|
__imod__
|
||||||
|
__ipow__
|
||||||
|
__ior__
|
||||||
|
__ixor__
|
||||||
|
__iand__
|
||||||
|
__ilshift__
|
||||||
|
__irshift__
|
||||||
|
TypeError
|
Loading…
Reference in New Issue
Block a user