d77da83d55
This feature is not often used so is guarded by the config option MICROPY_PY_BUILTINS_RANGE_BINOP which is disabled by default. With this option disabled MicroPython will always return false when comparing two range objects for equality (unless they are exactly the same object instance). This does not match CPython so if (in)equality between range objects is needed then this option should be enabled. Enabling this option costs between 100 and 200 bytes of code space depending on the machine architecture.
33 lines
803 B
Python
33 lines
803 B
Python
# test binary operations on range objects; (in)equality only
|
|
|
|
# this "feature test" actually tests the implementation but is the best we can do
|
|
if range(1) != range(1):
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
# basic (in)equality
|
|
print(range(1) == range(1))
|
|
print(range(1) != range(1))
|
|
print(range(1) != range(2))
|
|
|
|
# empty range
|
|
print(range(0) == range(0))
|
|
print(range(1, 0) == range(0))
|
|
print(range(1, 4, -1) == range(6, 3))
|
|
|
|
# 1 element range
|
|
print(range(1, 4, 10) == range(1, 4, 10))
|
|
print(range(1, 4, 10) == range(1, 4, 20))
|
|
print(range(1, 4, 10) == range(1, 8, 20))
|
|
|
|
# more than 1 element
|
|
print(range(0, 3, 2) == range(0, 3, 2))
|
|
print(range(0, 3, 2) == range(0, 4, 2))
|
|
print(range(0, 3, 2) == range(0, 5, 2))
|
|
|
|
# unsupported binary op
|
|
try:
|
|
range(1) + 10
|
|
except TypeError:
|
|
print('TypeError')
|