57365d8557
Array equality is defined as each element being equal but to keep code size down MicroPython implements a binary comparison. This can only be used correctly for elements with the same binary layout though so turn it into an NotImplementedError when comparing types for which the binary comparison yielded incorrect results: types with different sizes, and floating point numbers because nan != nan.
32 lines
714 B
Python
32 lines
714 B
Python
# test MicroPython-specific features of array.array
|
|
try:
|
|
import uarray as array
|
|
except ImportError:
|
|
try:
|
|
import array
|
|
except ImportError:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
# arrays of objects
|
|
a = array.array('O')
|
|
a.append(1)
|
|
print(a[0])
|
|
|
|
# arrays of pointers
|
|
a = array.array('P')
|
|
a.append(1)
|
|
print(a[0])
|
|
|
|
# comparison between mismatching binary layouts is not implemented
|
|
typecodes = ["b", "h", "i", "l", "q", "P", "O", "S", "f", "d"]
|
|
for a in typecodes:
|
|
for b in typecodes:
|
|
if a == b and a not in ["f", "d"]:
|
|
continue
|
|
try:
|
|
array.array(a) == array.array(b)
|
|
print('FAIL')
|
|
except NotImplementedError:
|
|
pass
|