summaryrefslogtreecommitdiffstatshomepage
path: root/tests
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-10-03 17:56:27 +1100
committerDamien George <damien.p.george@gmail.com>2017-10-03 17:56:27 +1100
commit2ac1364688cd3ee313661e82a336663551986fc8 (patch)
tree4e69bc7e8d09cb3e4456275e7eba8fcffcd4de0c /tests
parent01978648fdc317c13b17ba186c82df4fb8a5cbac (diff)
downloadmicropython-2ac1364688cd3ee313661e82a336663551986fc8.tar.gz
micropython-2ac1364688cd3ee313661e82a336663551986fc8.zip
py/objset: Check that RHS of a binary op is a set/frozenset.
CPython docs explicitly state that the RHS of a set/frozenset binary op must be a set to prevent user errors. It also preserves commutativity of the ops, eg: "abc" & set() is a TypeError, and so should be set() & "abc". This change actually decreases unix (x64) code by 160 bytes; it increases stm32 by 4 bytes and esp8266 by 28 bytes (but previous patch already introduced a much large saving).
Diffstat (limited to 'tests')
-rw-r--r--tests/basics/set_binop.py12
-rw-r--r--tests/misc/non_compliant.py12
-rw-r--r--tests/misc/non_compliant.py.exp2
3 files changed, 12 insertions, 14 deletions
diff --git a/tests/basics/set_binop.py b/tests/basics/set_binop.py
index 7848920b6a..bc76533b1f 100644
--- a/tests/basics/set_binop.py
+++ b/tests/basics/set_binop.py
@@ -47,6 +47,18 @@ s1 = s2 = set('abc')
s1 -= set('ad')
print(s1 is s2, len(s1))
+# RHS must be a set
+try:
+ print(set('12') >= '1')
+except TypeError:
+ print('TypeError')
+
+# RHS must be a set
+try:
+ print(set('12') <= '123')
+except TypeError:
+ print('TypeError')
+
# unsupported operator
try:
set('abc') * 2
diff --git a/tests/misc/non_compliant.py b/tests/misc/non_compliant.py
index b4c90e9fcf..152633c3b7 100644
--- a/tests/misc/non_compliant.py
+++ b/tests/misc/non_compliant.py
@@ -39,18 +39,6 @@ try:
except NotImplementedError:
print('NotImplementedError')
-# should raise type error
-try:
- print(set('12') >= '1')
-except TypeError:
- print('TypeError')
-
-# should raise type error
-try:
- print(set('12') <= '123')
-except TypeError:
- print('TypeError')
-
# uPy raises TypeError, shold be ValueError
try:
'%c' % b'\x01\x02'
diff --git a/tests/misc/non_compliant.py.exp b/tests/misc/non_compliant.py.exp
index ba5590acc0..9c157fd5bd 100644
--- a/tests/misc/non_compliant.py.exp
+++ b/tests/misc/non_compliant.py.exp
@@ -3,8 +3,6 @@ AttributeError
TypeError
NotImplementedError
NotImplementedError
-True
-True
TypeError, ValueError
NotImplementedError
NotImplementedError