summary refs log blame commit diff stats
path: root/tests/coroutines/texceptions.nim
blob: f3debf0a75799b5f3fb85d85307bbdc0b5b1b1bd (plain) (tree)
1
2
3
4
5
6
7
8
9


                              
                                


                                            
                   
                  
                   

                            
                   
                  
                   
                
                 





                                                                                              
import coro
var
  stackCheckValue = 1100220033
  numbers = newSeqOfCap[int](10)

proc testExceptions(id: int, sleep: float) =
  try:
    numbers.add(id)
    suspend(sleep)
    numbers.add(id)
    raise (ref ValueError)()
  except:
    numbers.add(id)
    suspend(sleep)
    numbers.add(id)
  suspend(sleep)
  numbers.add(id)

start(proc() = testExceptions(1, 0.01))
start(proc() = testExceptions(2, 0.011))
run()
doAssert(stackCheckValue == 1100220033, "Thread stack got corrupted")
doAssert(numbers == @[1, 2, 1, 2, 1, 2, 1, 2, 1, 2], "Coroutines executed in incorrect order")