package.path = "?.lua;test/lua/errors/?.lua" require 'args' -- arg type tests for coroutine library functions -- coroutine.create banner('coroutine.create') checkallpass('coroutine.create',{somefunction}) checkallerrors('coroutine.create',{notafunction},'bad argument') -- coroutine.resume banner('coroutine.resume') local co = coroutine.create(function() while true do coroutine.yield() end end) checkallpass('coroutine.resume',{{co},anylua}) checkallerrors('coroutine.resume',{notathread},'bad argument') -- coroutine.running banner('coroutine.running') checkallpass('coroutine.running',{anylua}) -- coroutine.status banner('coroutine.status') checkallpass('coroutine.status',{{co}}) checkallerrors('coroutine.status',{notathread},'bad argument') -- coroutine.wrap banner('coroutine.wrap') checkallpass('coroutine.wrap',{somefunction}) checkallerrors('coroutine.wrap',{notafunction},'bad argument') -- coroutine.yield banner('coroutine.yield') local function f() print( 'yield', coroutine.yield() ) print( 'yield', coroutine.yield(astring,anumber,aboolean) ) error('error within coroutine thread') end local co = coroutine.create( f ) print( 'status', coroutine.status(co) ) print( coroutine.resume(co,astring,anumber) ) print( 'status', coroutine.status(co) ) print( coroutine.resume(co,astring,anumber) ) print( 'status', coroutine.status(co) ) local s,e = coroutine.resume(co,astring,anumber) print( s, string.match(e,'error within coroutine thread') or 'bad message: '..tostring(e) ) print( 'status', coroutine.status(co) )