1# test builtin range type 2 3# print 4print(range(4)) 5 6# bool 7print(bool(range(0))) 8print(bool(range(10))) 9 10# len 11print(len(range(0))) 12print(len(range(4))) 13print(len(range(1, 4))) 14print(len(range(1, 4, 2))) 15print(len(range(1, 4, -1))) 16print(len(range(4, 1, -1))) 17print(len(range(4, 1, -2))) 18 19# subscr 20print(range(4)[0]) 21print(range(4)[1]) 22print(range(4)[-1]) 23 24# slice 25print(range(4)[0:]) 26print(range(4)[1:]) 27print(range(4)[1:2]) 28print(range(4)[1:3]) 29print(range(4)[1::2]) 30print(range(4)[1:-2:2]) 31print(range(1, 4)[:]) 32print(range(1, 4)[0:]) 33print(range(1, 4)[1:]) 34print(range(1, 4)[:-1]) 35print(range(7, -2, -4)[:]) 36print(range(1, 100, 5)[5:15:3]) 37print(range(1, 100, 5)[15:5:-3]) 38print(range(100, 1, -5)[5:15:3]) 39print(range(100, 1, -5)[15:5:-3]) 40 41# for this case uPy gives a different stop value but the listed elements are still correct 42print(list(range(7, -2, -4)[2:-2:])) 43 44# zero step 45try: 46 range(1, 2, 0) 47except ValueError: 48 print("ValueError") 49 50# bad unary op 51try: 52 -range(1) 53except TypeError: 54 print("TypeError") 55 56# bad subscription (can't store) 57try: 58 range(1)[0] = 1 59except TypeError: 60 print("TypeError") 61