micropython: add micropython component
This commit is contained in:
125
components/language/micropython/tests/float/complex1.py
Normal file
125
components/language/micropython/tests/float/complex1.py
Normal file
@@ -0,0 +1,125 @@
|
||||
# test basic complex number functionality
|
||||
|
||||
# constructor
|
||||
print(complex(1))
|
||||
print(complex(1.2))
|
||||
print(complex(1.2j))
|
||||
print(complex("1"))
|
||||
print(complex("1.2"))
|
||||
print(complex("1.2j"))
|
||||
print(complex(1, 2))
|
||||
print(complex(1j, 2j))
|
||||
|
||||
# unary ops
|
||||
print(bool(1j))
|
||||
print(+(1j))
|
||||
print(-(1 + 2j))
|
||||
|
||||
# binary ops
|
||||
print(1j + False)
|
||||
print(1j + True)
|
||||
print(1j + 2)
|
||||
print(1j + 2j)
|
||||
print(1j - 2)
|
||||
print(1j - 2j)
|
||||
print(1j * 2)
|
||||
print(1j * 2j)
|
||||
print(1j / 2)
|
||||
print((1j / 2j).real)
|
||||
print(1j / (1 + 2j))
|
||||
ans = 0j**0
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
ans = 0j**1
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
ans = 0j**0j
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
ans = 1j**2.5
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
ans = 1j**2.5j
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
|
||||
# comparison
|
||||
print(1j == 1)
|
||||
print(1j == 1j)
|
||||
print(0 + 0j == False, 1 + 0j == True)
|
||||
print(False == 0 + 0j, True == 1 + 0j)
|
||||
|
||||
# comparison of nan is special
|
||||
nan = float("nan") * 1j
|
||||
print(nan == 1j)
|
||||
print(nan == nan)
|
||||
|
||||
# builtin abs
|
||||
print(abs(1j))
|
||||
print("%.5g" % abs(1j + 2))
|
||||
|
||||
# builtin hash
|
||||
print(hash(1 + 0j))
|
||||
print(type(hash(1j)))
|
||||
|
||||
# float on lhs should delegate to complex
|
||||
print(1.2 + 3j)
|
||||
|
||||
# negative base and fractional power should create a complex
|
||||
ans = (-1) ** 2.3
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
ans = (-1.2) ** -3.4
|
||||
print("%.5g %.5g" % (ans.real, ans.imag))
|
||||
|
||||
# check printing of inf/nan
|
||||
print(float("nan") * 1j)
|
||||
print(float("-nan") * 1j)
|
||||
print(float("inf") * (1 + 1j))
|
||||
print(float("-inf") * (1 + 1j))
|
||||
|
||||
# can't assign to attributes
|
||||
try:
|
||||
(1j).imag = 0
|
||||
except AttributeError:
|
||||
print("AttributeError")
|
||||
|
||||
# can't convert rhs to complex
|
||||
try:
|
||||
1j + []
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
# unsupported unary op
|
||||
try:
|
||||
~(1j)
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
# unsupported binary op
|
||||
try:
|
||||
1j // 2
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
# unsupported binary op
|
||||
try:
|
||||
1j < 2j
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
# small int on LHS, complex on RHS, unsupported op
|
||||
try:
|
||||
print(1 | 1j)
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
# zero division
|
||||
try:
|
||||
1j / 0
|
||||
except ZeroDivisionError:
|
||||
print("ZeroDivisionError")
|
||||
|
||||
# zero division via power
|
||||
try:
|
||||
0j**-1
|
||||
except ZeroDivisionError:
|
||||
print("ZeroDivisionError")
|
||||
try:
|
||||
0j**1j
|
||||
except ZeroDivisionError:
|
||||
print("ZeroDivisionError")
|
Reference in New Issue
Block a user