summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/array1.py
diff options
context:
space:
mode:
authorstijn <stijn@ignitron.net>2021-05-12 17:02:06 +0200
committerDamien George <damien@micropython.org>2021-05-13 22:16:14 +1000
commit57365d855734142deb030ebcd00c10efcedf554b (patch)
treed121b5fc9be3e172649d5c91eba81a559f183175 /tests/basics/array1.py
parent6affcb0104336e629390b2bfba997f3446f9ea58 (diff)
downloadmicropython-57365d855734142deb030ebcd00c10efcedf554b.tar.gz
micropython-57365d855734142deb030ebcd00c10efcedf554b.zip
py/objarray: Prohibit comparison of mismatching types.
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.
Diffstat (limited to 'tests/basics/array1.py')
-rw-r--r--tests/basics/array1.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/basics/array1.py b/tests/basics/array1.py
index 5b3f475786..15789e2c99 100644
--- a/tests/basics/array1.py
+++ b/tests/basics/array1.py
@@ -41,14 +41,23 @@ except ValueError:
# equality (CPython requires both sides are array)
print(bytes(array.array('b', [0x61, 0x62, 0x63])) == b'abc')
print(array.array('b', [0x61, 0x62, 0x63]) == b'abc')
+print(array.array('B', [0x61, 0x62, 0x63]) == b'abc')
print(array.array('b', [0x61, 0x62, 0x63]) != b'abc')
print(array.array('b', [0x61, 0x62, 0x63]) == b'xyz')
print(array.array('b', [0x61, 0x62, 0x63]) != b'xyz')
print(b'abc' == array.array('b', [0x61, 0x62, 0x63]))
+print(b'abc' == array.array('B', [0x61, 0x62, 0x63]))
print(b'abc' != array.array('b', [0x61, 0x62, 0x63]))
print(b'xyz' == array.array('b', [0x61, 0x62, 0x63]))
print(b'xyz' != array.array('b', [0x61, 0x62, 0x63]))
+compatible_typecodes = []
+for t in ["b", "h", "i", "l", "q"]:
+ compatible_typecodes.append((t, t))
+ compatible_typecodes.append((t, t.upper()))
+for a, b in compatible_typecodes:
+ print(array.array(a, [1, 2]) == array.array(b, [1, 2]))
+
class X(array.array):
pass