# test micropython.schedule() function import micropython try: micropython.schedule except AttributeError: print("SKIP") raise SystemExit # Basic test of scheduling a function. def callback(arg): global done print(arg) done = True done = False micropython.schedule(callback, 1) while not done: pass # Test that callbacks can be scheduled from within a callback, but # that they don't execute until the outer callback is finished. def callback_inner(arg): global done print("inner") done += 1 def callback_outer(arg): global done micropython.schedule(callback_inner, 0) # need a loop so that the VM can check for pending events for i in range(2): pass print("outer") done += 1 done = 0 micropython.schedule(callback_outer, 0) while done != 2: pass # Test that scheduling too many callbacks leads to an exception. To do this we # must schedule from within a callback to guarantee that the scheduler is locked. def callback(arg): global done try: for i in range(100): micropython.schedule(lambda x: x, None) except RuntimeError: print("RuntimeError") done = True done = False micropython.schedule(callback, None) while not done: pass