def test_schedule_callback(self): res = [] cb = [] def schedule_cb(prev, next): cb.append((prev, next)) core.set_schedule_callback(schedule_cb) def f(i): res.append('A_%s' % i) core.schedule() res.append('B_%s' % i) t1 = core.tasklet(f)(1) t2 = core.tasklet(f)(2) maintask = core.getmain() core.run() assert res == ['A_1', 'A_2', 'B_1', 'B_2'] assert len(cb) == 5 assert cb[0] == (maintask, t1) assert cb[1] == (t1, t2) assert cb[2] == (t2, t1) assert cb[3] == (t1, t2) assert cb[4] == (t2, maintask)
def test_schedule_return(self): def f():pass t1= core.tasklet(f)() r = core.schedule() assert r is core.getmain() t2 = core.tasklet(f)() r = core.schedule('test') assert r == 'test'
def test_schedule_return(self): def f(): pass t1 = core.tasklet(f)() r = core.schedule() assert r is core.getmain() t2 = core.tasklet(f)() r = core.schedule('test') assert r == 'test'
def test_simple(self): rlist = [] def f(): rlist.append('f') def g(): rlist.append('g') core.schedule() def main(): rlist.append('m') cg = core.tasklet(g)() cf = core.tasklet(f)() core.run() rlist.append('m') main() assert core.getcurrent() is core.getmain() assert rlist == 'm g f m'.split()
def test_channel_callback(self): res = [] cb = [] def callback_function(chan, task, sending, willblock): cb.append((chan, task, sending, willblock)) core.set_channel_callback(callback_function) def f(chan): chan.send('hello') val = chan.receive() res.append(val) chan = core.channel() task = core.tasklet(f)(chan) val = chan.receive() res.append(val) chan.send('world') assert res == ['hello','world'] maintask = core.getmain() assert cb == [ (chan, maintask, 0, 1), (chan, task, 1, 0), (chan, maintask, 1, 1), (chan, task, 0, 0) ]