# 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