Multithread.txt 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # This tests multithreaded stepping
  2. # - Steps should stay in the same thread
  3. # - Run To Cursor should stay on the same thread
  4. # - Step Out should stay on the same thread
  5. ShowFile("src/Multithread.bf")
  6. GotoText("//MultithreadTester_Test")
  7. ToggleBreakpoint()
  8. RunWithCompiling()
  9. StepOver()
  10. AssertEvalEquals("doTest = true", "true")
  11. GotoText("//ThreadFunc")
  12. ToggleBreakpoint()
  13. Continue()
  14. AssertEvalEquals("sLocalVal", "1")
  15. Continue()
  16. AssertEvalEquals("sLocalVal", "1")
  17. Continue()
  18. AssertEvalEquals("sLocalVal", "1")
  19. # We now have all 3 threads running and we're the third one
  20. # We now do a series of execution tests, concentrating on the "val++" line
  21. # We test that "run to cursor" does a full iteration back to that
  22. # same line, both from having stepped onto it using "StepOver" and
  23. # having previously arrived there from another "RunToCursor"
  24. AssertEvalEquals("threadNum", "2")
  25. StepOver()
  26. AssertEvalEquals("threadNum", "2")
  27. StepOver()
  28. AssertEvalEquals("threadNum", "2")
  29. StepOver()
  30. AssertEvalEquals("threadNum", "2")
  31. StepOver()
  32. AssertEvalEquals("threadNum", "2")
  33. StepOver()
  34. AssertEvalEquals("threadNum", "2")
  35. StepOver()
  36. AssertEvalEquals("i", "1")
  37. RunToCursor()
  38. AssertEvalEquals("threadNum", "2")
  39. AssertEvalEquals("i", "2")
  40. RunToCursor()
  41. AssertEvalEquals("threadNum", "2")
  42. AssertEvalEquals("i", "3")
  43. # Pass 2
  44. StepOver()
  45. StepOver()
  46. StepOver()
  47. StepOver()
  48. AssertEvalEquals("threadNum", "2")
  49. AssertEvalEquals("i", "4")
  50. RunToCursor()
  51. AssertEvalEquals("threadNum", "2")
  52. AssertEvalEquals("i", "5")
  53. RunToCursor()
  54. AssertEvalEquals("threadNum", "2")
  55. AssertEvalEquals("i", "6")
  56. # Pass 3
  57. StepOver()
  58. StepOver()
  59. StepOver()
  60. StepOver()
  61. AssertEvalEquals("threadNum", "2")
  62. AssertEvalEquals("i", "7")
  63. RunToCursor()
  64. AssertEvalEquals("threadNum", "2")
  65. AssertEvalEquals("i", "8")
  66. RunToCursor()
  67. AssertEvalEquals("threadNum", "2")
  68. AssertEvalEquals("i", "9")
  69. Stop()
  70. # Set up the StepOut test
  71. StepInto()
  72. StepOver()
  73. StepOver()
  74. StepOver()
  75. StepInto()
  76. StepOver()
  77. StepOver()
  78. AssertEvalEquals("val", "2")
  79. StepOut()
  80. AssertEvalEquals("depth", "0")
  81. AssertEvalEquals("val", "5")
  82. StepOut()
  83. AssertEvalEquals("threadNum", "2")
  84. AssertEvalEquals("i", "9")