3
from sys import getrefcount
4
from PySide.QtCore import QObject, SIGNAL, QCoreApplication, QTimer, QVariant
5
from PySide.QtCore import QState, QFinalState, QStateMachine, QParallelAnimationGroup, QEventTransition
7
def addStates(transition):
10
transition.setTargetStates([sx, sy])
12
def addAnimation(transition):
13
animation = QParallelAnimationGroup()
14
transition.addAnimation(animation)
16
class QAbstractTransitionTest(unittest.TestCase):
19
app = QCoreApplication([])
22
o.setProperty("text", QVariant("INdT"))
24
machine = QStateMachine()
26
s1.assignProperty(o, "text", QVariant("Rocks"))
29
t = s1.addTransition(o, SIGNAL("change()"), s2)
31
self.assertEqual(t.targetStates(), [s2])
34
self.assertEqual(len(t.targetStates()), 2)
36
animation = QParallelAnimationGroup()
37
t.addAnimation(animation)
39
self.assertEqual(t.animations(), [animation])
42
self.assertEqual(t.animations()[0].parent(), None)
46
machine.setInitialState(s1)
49
QTimer.singleShot(100, app.quit)
52
def testRefCountOfTargetState(self):
53
transition = QEventTransition()
55
refcount1 = getrefcount(state1)
57
transition.setTargetState(state1)
59
self.assertEqual(transition.targetState(), state1)
60
self.assertEqual(getrefcount(transition.targetState()), refcount1 + 1)
63
refcount2 = getrefcount(state2)
65
transition.setTargetState(state2)
67
self.assertEqual(transition.targetState(), state2)
68
self.assertEqual(getrefcount(transition.targetState()), refcount2 + 1)
69
self.assertEqual(getrefcount(state1), refcount1)
73
self.assertEqual(getrefcount(state2), refcount2)
75
def testRefCountOfTargetStates(self):
76
transition = QEventTransition()
79
states = [state1, state2]
80
refcount1 = getrefcount(state1)
81
refcount2 = getrefcount(state2)
83
transition.setTargetStates(states)
85
self.assertEqual(transition.targetStates(), states)
86
self.assertEqual(transition.targetState(), state1)
87
self.assertEqual(getrefcount(transition.targetStates()[0]), refcount1 + 1)
88
self.assertEqual(getrefcount(transition.targetStates()[1]), refcount2 + 1)
93
self.assertEqual(getrefcount(state1), refcount1)
94
self.assertEqual(getrefcount(state2), refcount2)
96
def testRefCountOfTargetStatesAfterSingleTargetState(self):
97
transition = QEventTransition()
99
refcount0 = getrefcount(state0)
101
transition.setTargetState(state0)
103
self.assertEqual(transition.targetState(), state0)
104
self.assertEqual(getrefcount(transition.targetState()), refcount0 + 1)
108
states = [state1, state2]
109
refcount1 = getrefcount(state1)
110
refcount2 = getrefcount(state2)
112
transition.setTargetStates(states)
114
self.assertEqual(getrefcount(state0), refcount0)
115
self.assertEqual(transition.targetStates(), states)
116
self.assertEqual(transition.targetState(), state1)
117
self.assertEqual(getrefcount(transition.targetStates()[0]), refcount1 + 1)
118
self.assertEqual(getrefcount(transition.targetStates()[1]), refcount2 + 1)
123
self.assertEqual(getrefcount(state1), refcount1)
124
self.assertEqual(getrefcount(state2), refcount2)
126
def testRefCountOfTargetStatesBeforeSingleTargetState(self):
127
transition = QEventTransition()
130
states = [state1, state2]
131
refcount1 = getrefcount(state1)
132
refcount2 = getrefcount(state2)
134
transition.setTargetStates(states)
136
self.assertEqual(transition.targetStates(), states)
137
self.assertEqual(transition.targetState(), state1)
138
self.assertEqual(getrefcount(transition.targetStates()[0]), refcount1 + 1)
139
self.assertEqual(getrefcount(transition.targetStates()[1]), refcount2 + 1)
142
refcount3 = getrefcount(state3)
144
transition.setTargetState(state3)
146
self.assertEqual(transition.targetState(), state3)
147
self.assertEqual(getrefcount(transition.targetState()), refcount3 + 1)
151
self.assertEqual(getrefcount(state1), refcount1)
152
self.assertEqual(getrefcount(state2), refcount2)
154
if __name__ == '__main__':