diff --git a/tests/basics/builtin_hash.py b/tests/basics/builtin_hash.py index c4c7019b47..0abfe980e1 100644 --- a/tests/basics/builtin_hash.py +++ b/tests/basics/builtin_hash.py @@ -1,5 +1,16 @@ # test builtin hash function +print(hash(False)) +print(hash(True)) +print({():1}) # hash tuple +print({1 << 66:1}) # hash big int +print(hash in {hash:1}) # hash function + +try: + hash([]) +except TypeError: + print("TypeError") + class A: def __hash__(self): return 123 diff --git a/tests/basics/del_global.py b/tests/basics/del_global.py new file mode 100644 index 0000000000..24ecec8e84 --- /dev/null +++ b/tests/basics/del_global.py @@ -0,0 +1,18 @@ +# del global + +def do_del(): + global x + del x + +x = 1 +print(x) +do_del() +try: + print(x) +except NameError: + print("NameError") +try: + do_del() +except: # NameError: + # FIXME uPy returns KeyError for this + print("NameError") diff --git a/tests/basics/del_name.py b/tests/basics/del_name.py index f75a2f5dc6..c92be54d3b 100644 --- a/tests/basics/del_name.py +++ b/tests/basics/del_name.py @@ -1,4 +1,4 @@ -# del global +# del name x = 1 print(x) diff --git a/tests/basics/fun_largestate.py b/tests/basics/fun_largestate.py index c83f730dcb..f13619295f 100644 --- a/tests/basics/fun_largestate.py +++ b/tests/basics/fun_largestate.py @@ -129,5 +129,9 @@ def f(): x125 = 1 x126 = 1 +f() + def g(): x = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,] + +g() diff --git a/tests/basics/int1.py b/tests/basics/int1.py index 01e0b0b407..89d4fd9d4b 100644 --- a/tests/basics/int1.py +++ b/tests/basics/int1.py @@ -1,3 +1,6 @@ +print(int(False)) +print(int(True)) + print(int(0)) print(int(1)) print(int(+1)) diff --git a/tests/basics/int_small.py b/tests/basics/int_small.py index 1b2c983e23..496e830d26 100644 --- a/tests/basics/int_small.py +++ b/tests/basics/int_small.py @@ -49,6 +49,15 @@ print(a) # This would overflow #a -= 1 +# negative shifts are not allowed +try: + a << -1 +except ValueError: + print("ValueError") +try: + a >> -1 +except ValueError: + print("ValueError") # Shifts to big amounts are undefined behavior in C and is CPU-specific diff --git a/tests/basics/unary_op.py b/tests/basics/unary_op.py index 9846285d55..3084c273e7 100644 --- a/tests/basics/unary_op.py +++ b/tests/basics/unary_op.py @@ -1,3 +1,8 @@ +x = 1 +print(+x) +print(-x) +print(~x) + print(not None) print(not False) print(not True) diff --git a/tests/float/int_power.py b/tests/float/int_power.py new file mode 100644 index 0000000000..a5a9a5b7a3 --- /dev/null +++ b/tests/float/int_power.py @@ -0,0 +1,8 @@ +# negative power should produce float + +x = 2 +print(x ** -2) + +x = 3 +x **= -2 +print(x)