blob: 563482486dec3f22c5f051f363fd8075ba37b6cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import unittest
from PySide.QtCore import SIGNAL, QTimer
from PySide.QtScript import QScriptEngine
from PySide.QtScriptTools import QScriptEngineDebugger
from helper import UsesQApplication
class DebuggerTest(UsesQApplication):
def setUp(self):
UsesQApplication.setUp(self)
self.engine = QScriptEngine()
self.debugger = QScriptEngineDebugger()
self.has_suspended = 0
self.has_resumed = 0
self.count = 3
def suspended(self):
self.has_suspended += 1
# Will emit evaluationResumed until there are more instructions to be run
QTimer.singleShot(100, self.debugger.action(QScriptEngineDebugger.StepIntoAction).trigger)
def resumed(self):
# Will be called when debugger.state() change from Suspended to Running
# except for the first time.
self.has_resumed += 1
def testBasic(self):
'''Interrupt and resume evaluation with QScriptEngineDebugger'''
self.debugger.attachTo(self.engine)
self.debugger.setAutoShowStandardWindow(False)
self.debugger.connect(SIGNAL('evaluationSuspended()'), self.suspended)
self.debugger.connect(SIGNAL('evaluationResumed()'), self.resumed)
self.debugger.action(QScriptEngineDebugger.InterruptAction).trigger()
self.engine.evaluate("3+4\n2+1\n5+1")
self.assertEqual(self.has_resumed, 2)
self.assertEqual(self.has_suspended, 3)
if __name__ == '__main__':
unittest.main()
|