def testNonNodeAttrAnim(self): class GenericClass(object): def __init__(self): self.numberValue = 0 self.pointValue = avg.Point2D(0.0, 0.0) def on1Stop(): self.__onStopCalled = True def on2Start(): self.__onStopBeforeOnStart = self.__onStopCalled self.loadEmptyScene() player.setFakeFPS(10) genericObject1 = GenericClass() genericObject2 = genericObject1 genericObject3 = GenericClass() anim1 = avg.LinearAnim(genericObject1, "numberValue", 1000, 0, 100, False, None, on1Stop) anim2 = avg.LinearAnim(genericObject2, "numberValue", 1200, 0, 200, False, on2Start) anim3 = avg.LinearAnim(genericObject1, "pointValue", 800, (0, 0), (100, 200)) anim4 = avg.LinearAnim(genericObject3, "numberValue", 400, 0, 42) self.__onStopCalled = False self.__onStopBeforeOnStart = False self.start(False, (lambda: anim1.start(), lambda: self.assert_(anim1.isRunning()), lambda: self.assert_(not(self.__onStopCalled)), lambda: anim2.start(), lambda: self.assert_(self.__onStopBeforeOnStart), lambda: self.assert_(not(anim1.isRunning())), lambda: self.assert_(anim2.isRunning()), lambda: self.assertEqual(avg.getNumRunningAnims(), 1), lambda: anim3.start(), lambda: self.assert_(anim2.isRunning()), lambda: self.assert_(anim3.isRunning()), lambda: self.assertEqual(avg.getNumRunningAnims(), 2), lambda: anim4.start(), lambda: self.assert_(anim4.isRunning()), lambda: self.assertEqual(avg.getNumRunningAnims(), 3), lambda: self.delay(200), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.assert_(genericObject1.numberValue == 200), lambda: self.assert_(genericObject2.pointValue == (100, 200)), lambda: self.assert_(genericObject3.numberValue == 42) )) anim1 = None anim2 = None anim3 = None anim4 = None genericObject1 = None genericObject2 = None genericObject3 = None
def testNonNodeAttrAnim(self): class GenericClass(object): def __init__(self): self.numberValue = 0 self.pointValue = avg.Point2D(0.0, 0.0) def on1Stop(): self.__onStopCalled = True def on2Start(): self.__onStopBeforeOnStart = self.__onStopCalled self.loadEmptyScene() player.setFakeFPS(10) genericObject1 = GenericClass() genericObject2 = genericObject1 genericObject3 = GenericClass() anim1 = avg.LinearAnim(genericObject1, "numberValue", 1000, 0, 100, False, None, on1Stop) anim2 = avg.LinearAnim(genericObject2, "numberValue", 1200, 0, 200, False, on2Start) anim3 = avg.LinearAnim(genericObject1, "pointValue", 800, (0, 0), (100, 200)) anim4 = avg.LinearAnim(genericObject3, "numberValue", 400, 0, 42) self.__onStopCalled = False self.__onStopBeforeOnStart = False self.start( False, (lambda: anim1.start(), lambda: self.assert_(anim1.isRunning()), lambda: self.assert_(not (self.__onStopCalled)), lambda: anim2.start(), lambda: self.assert_(self.__onStopBeforeOnStart), lambda: self.assert_(not (anim1.isRunning())), lambda: self.assert_(anim2.isRunning()), lambda: self.assertEqual(avg.getNumRunningAnims(), 1), lambda: anim3.start(), lambda: self.assert_(anim2.isRunning()), lambda: self.assert_(anim3.isRunning()), lambda: self.assertEqual(avg.getNumRunningAnims(), 2), lambda: anim4.start(), lambda: self.assert_(anim4.isRunning()), lambda: self.assertEqual(avg.getNumRunningAnims(), 3), lambda: self.delay(200), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.assert_(genericObject1.numberValue == 200), lambda: self.assert_(genericObject2.pointValue == (100, 200)), lambda: self.assert_(genericObject3.numberValue == 42))) anim1 = None anim2 = None anim3 = None anim4 = None genericObject1 = None genericObject2 = None genericObject3 = None
def testStateAnim(self): def state1StopCallback(): self.__state1StopCallbackCalled = True def state2StartCallback(): if self.__state1StopCallbackCalled: self.__stop1Start2CallbackOrder = True self.__state2StartCallbackCalled = True def makeAnim(): self.anim = avg.StateAnim( [avg.AnimState("STATE1", avg.LinearAnim(self.__node, "x", 200, 0, 100, False, None, state1StopCallback), "STATE2"), avg.AnimState("STATE2", avg.LinearAnim(self.__node, "x", 200, 100, 50, False, state2StartCallback), "STATE3"), avg.AnimState("STATE3", avg.WaitAnim()) ]) # self.anim.setDebug(True) def killAnim(): self.anim.setState("") self.anim = None def startFireForgetAnim(): stateAnim = avg.StateAnim( [avg.AnimState("STATE1", avg.LinearAnim(self.__node, "x", 200, 0, 100, False), "STATE2"), avg.AnimState("STATE2", avg.WaitAnim(200)) ]) # stateAnim.setDebug(True) stateAnim.setState("STATE1") self.initScene() self.__state1StopCallbackCalled = False self.__state2StartCallbackCalled = False self.__stop1Start2CallbackOrder = False self.start(False, (makeAnim, lambda: self.compareImage("testStateAnimC1"), lambda: self.anim.setState("STATE1"), None, lambda: self.compareImage("testStateAnimC2"), lambda: self.assertEqual(self.anim.getState(), "STATE2"), lambda: self.compareImage("testStateAnimC3"), lambda: self.assert_(self.__state1StopCallbackCalled), lambda: self.assert_(self.__state2StartCallbackCalled), lambda: self.assert_(self.__stop1Start2CallbackOrder), lambda: self.assertEqual(self.anim.getState(), "STATE3"), lambda: self.compareImage("testStateAnimC4"), lambda: self.anim.setState("STATE1"), lambda: self.assertEqual(avg.getNumRunningAnims(), 1), lambda: self.compareImage("testStateAnimC5"), killAnim, startFireForgetAnim, lambda: self.delay(200), lambda: self.compareImage("testStateAnimC6"), lambda: self.delay(200), # lambda: player.getTestHelper().dumpObjects() ))
def testAnimType(self, curAnim, imgBaseName): def onStop(): self.__onStopCalled = True def startAnim(): self.__onStopCalled = False self.__anim.start() def startKeepAttr(): self.__node.x = 32 self.__anim.start(True) def abortAnim(): self.__anim.abort() self.__anim = curAnim self.__anim.setStopCallback(onStop) self.__onStopCalled = False self.assertRaises(RuntimeError, lambda: self.__anim.start()) self.start(False, (startAnim, lambda: self.compareImage(imgBaseName+"1"), lambda: self.compareImage(imgBaseName+"2"), lambda: self.compareImage(imgBaseName+"3"), lambda: self.assert_(self.__onStopCalled), lambda: self.assert_(not(self.__anim.isRunning())), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.compareImage(imgBaseName+"4"), lambda: self.assertEqual(self.__node.x, 100), startAnim, lambda: self.compareImage(imgBaseName+"1"), lambda: self.assertEqual(avg.getNumRunningAnims(), 1), abortAnim, lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.compareImage(imgBaseName+"5"), lambda: self.assert_(not(self.__anim.isRunning())), None, lambda: self.assert_(self.__onStopCalled), startKeepAttr, lambda: self.compareImage(imgBaseName+"6"), lambda: self.assertEqual(avg.getNumRunningAnims(), 1) )) self.__anim = None
def testStateAnim(self): def state1StopCallback(): self.__state1StopCallbackCalled = True def state2StartCallback(): if self.__state1StopCallbackCalled: self.__stop1Start2CallbackOrder = True self.__state2StartCallbackCalled = True def makeAnim(): self.anim = avg.StateAnim([ avg.AnimState( "STATE1", avg.LinearAnim(self.__node, "x", 200, 0, 100, False, None, state1StopCallback), "STATE2"), avg.AnimState( "STATE2", avg.LinearAnim(self.__node, "x", 200, 100, 50, False, state2StartCallback), "STATE3"), avg.AnimState("STATE3", avg.WaitAnim()) ]) # self.anim.setDebug(True) def killAnim(): self.anim = None self.initScene() self.__state1StopCallbackCalled = False self.__state2StartCallbackCalled = False self.__stop1Start2CallbackOrder = False self.start( False, ( makeAnim, lambda: self.compareImage("testStateAnimC1"), lambda: self.anim.setState("STATE1"), None, lambda: self.compareImage("testStateAnimC2"), lambda: self.assertEqual(self.anim.getState(), "STATE2"), lambda: self.compareImage("testStateAnimC3"), lambda: self.assert_(self.__state1StopCallbackCalled), lambda: self.assert_(self.__state2StartCallbackCalled), lambda: self.assert_(self.__stop1Start2CallbackOrder), lambda: self.assertEqual(self.anim.getState(), "STATE3"), lambda: self.compareImage("testStateAnimC4"), lambda: self.anim.setState("STATE1"), lambda: self.assertEqual(avg.getNumRunningAnims(), 1), lambda: self.compareImage("testStateAnimC5"), killAnim, # lambda: player.getTestHelper().dumpObjects() ))
def testAnimType(self, curAnim, imgBaseName): def onStop(): self.__onStopCalled = True def startAnim(): self.__onStopCalled = False self.__anim.start() def startKeepAttr(): self.__node.x = 32 self.__anim.start(True) def abortAnim(): self.__anim.abort() self.__anim = curAnim self.__anim.setStopCallback(onStop) self.__onStopCalled = False self.assertException(lambda: self.__anim.start()) self.start( False, (startAnim, lambda: self.compareImage(imgBaseName + "1"), lambda: self.compareImage(imgBaseName + "2"), lambda: self.compareImage(imgBaseName + "3"), lambda: self.assert_(self.__onStopCalled), lambda: self.assert_(not (self.__anim.isRunning())), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.compareImage(imgBaseName + "4"), lambda: self.assertEqual(self.__node.x, 100), startAnim, lambda: self.compareImage(imgBaseName + "1"), lambda: self.assertEqual(avg.getNumRunningAnims(), 1), abortAnim, lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.compareImage(imgBaseName + "5"), lambda: self.assert_(not (self.__anim.isRunning())), None, lambda: self.assert_(self.__onStopCalled), startKeepAttr, lambda: self.compareImage(imgBaseName + "6"), lambda: self.assertEqual(avg.getNumRunningAnims(), 1))) self.__anim = None
def testFadeOut(self): def onStop(): self.__onStopCalled = True self.initScene() self.__node.opacity = 0.5 self.__onStopCalled = False self.start(False, (lambda: avg.fadeOut(self.__node, 200, onStop), lambda: self.compareImage("testFadeOut1"), lambda: self.compareImage("testFadeOut2"), lambda: self.compareImage("testFadeOut3"), lambda: self.assert_(self.__onStopCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0))) self.__anim = None
def testFadeOut(self): def onStop(): self.__onStopCalled = True self.initScene() self.__node.opacity=0.5 self.__onStopCalled = False self.start(False, (lambda: avg.fadeOut(self.__node, 200, onStop), lambda: self.compareImage("testFadeOut1"), lambda: self.compareImage("testFadeOut2"), lambda: self.compareImage("testFadeOut3"), lambda: self.assert_(self.__onStopCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0) )) self.__anim = None
def testLinearAnimZeroDuration(self): def onStop(): self.__onStopCalled = True def startAnim(): self.__onStopCalled = False self.__anim.start() self.initScene() self.__anim = avg.LinearAnim(self.__node, "x", 0, 0, 100, False, None, onStop) self.__onStopCalled = False self.start(False, (startAnim, lambda: self.compareImage("testLinearAnimZeroDurationC1"), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.assert_(self.__onStopCalled), lambda: self.assert_(not (self.__anim.isRunning())))) self.__anim = None
def testLinearAnimZeroDuration(self): def onStop(): self.__onStopCalled = True def startAnim(): self.__onStopCalled = False self.__anim.start() self.initScene() self.__anim = avg.LinearAnim(self.__node, "x", 0, 0, 100, False, None, onStop) self.__onStopCalled = False self.start(False, (startAnim, lambda: self.compareImage("testLinearAnimZeroDurationC1"), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), lambda: self.assert_(self.__onStopCalled), lambda: self.assert_(not(self.__anim.isRunning())) )) self.__anim = None
def testAnimRegistry(self): def on1Stop(): self.__onStopCalled = True def on2Start(): self.__onStopBeforeOnStart = self.__onStopCalled self.initScene() sameNode = player.getElementByID("test") anim1 = avg.LinearAnim(self.__node, "x", 500, 0, 100, False, None, on1Stop) anim2 = avg.LinearAnim(sameNode, "x", 300, 0, 100, False, on2Start) self.__onStopCalled = False self.__onStopBeforeOnStart = False self.start(False, (lambda: anim1.start(), lambda: self.assert_(not (self.__onStopCalled)), lambda: anim2.start(), lambda: self.assert_(self.__onStopBeforeOnStart), lambda: self.assertEqual(avg.getNumRunningAnims(), 1))) anim1 = None anim2 = None
def testAnimRegistry(self): def on1Stop(): self.__onStopCalled = True def on2Start(): self.__onStopBeforeOnStart = self.__onStopCalled self.initScene() sameNode = player.getElementByID("test") anim1 = avg.LinearAnim(self.__node, "x", 500, 0, 100, False, None, on1Stop) anim2 = avg.LinearAnim(sameNode, "x", 300, 0, 100, False, on2Start) self.__onStopCalled = False self.__onStopBeforeOnStart = False self.start(False, (lambda: anim1.start(), lambda: self.assert_(not(self.__onStopCalled)), lambda: anim2.start(), lambda: self.assert_(self.__onStopBeforeOnStart), lambda: self.assertEqual(avg.getNumRunningAnims(), 1) )) anim1 = None anim2 = None
def __dumpObjects(self): gc.collect() testHelper = g_Player.getTestHelper() testHelper.dumpObjects() print 'Num anims: ', avg.getNumRunningAnims() print 'Num python objects: ', len(gc.get_objects())
def testParallelAnim(self): def animStopped(): self.__endCalled = True def startFireForgetAnim(): avg.ParallelAnim([ avg.LinearAnim(self.nodes[0], "x", 200, 0, 60), avg.LinearAnim(self.nodes[1], "x", 200, 0, 120) ]).start() def startAnim(): self.anim = avg.ParallelAnim([ avg.LinearAnim(self.nodes[0], "x", 200, 0, 60), avg.LinearAnim(self.nodes[1], "x", 400, 0, 120), avg.EaseInOutAnim(self.nodes[2], "x", 400, 0, 120, 100, 100) ], None, animStopped) self.__endCalled = False self.anim.start() def startTimedAnim(): self.anim = avg.ParallelAnim([ avg.LinearAnim(self.nodes[0], "x", 200, 0, 60), avg.LinearAnim(self.nodes[1], "x", 400, 0, 120), ], None, animStopped, 200) self.__endCalled = False self.anim.start() def abortAnim(): self.anim.abort() def deleteAnim(): self.anim = None root = self.loadEmptyScene() self.nodes = [] for i in range(3): node = avg.ImageNode(id=str(i), pos=(64, i * 20), href="rgb24-64x64.png") root.appendChild(node) self.nodes.append(node) player.setFakeFPS(10) self.__endCalled = False self.start( False, (startFireForgetAnim, lambda: self.assertEqual(avg.getNumRunningAnims(), 2), None, startAnim, lambda: self.assertEqual(avg.getNumRunningAnims(), 3), lambda: self.compareImage("testParallelAnimC1"), lambda: self.assert_(self.anim.isRunning()), lambda: self.delay(200), lambda: self.assert_(not (self.anim.isRunning())), lambda: self.compareImage("testParallelAnimC2"), lambda: self.assert_(self.__endCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), startAnim, abortAnim, lambda: self.compareImage("testParallelAnimC3"), lambda: self.assert_(self.__endCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), startTimedAnim, lambda: self.delay(200), lambda: self.assert_(self.__endCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), startAnim)) self.nodes = []
def testParallelAnim(self): def animStopped(): self.__endCalled = True def startFireForgetAnim(): avg.ParallelAnim( [ avg.LinearAnim(self.nodes[0], "x", 200, 0, 60), avg.LinearAnim(self.nodes[1], "x", 200, 0, 120) ]).start() def startAnim(): self.anim = avg.ParallelAnim( [ avg.LinearAnim(self.nodes[0], "x", 200, 0, 60), avg.LinearAnim(self.nodes[1], "x", 400, 0, 120), avg.EaseInOutAnim(self.nodes[2], "x", 400, 0, 120, 100, 100) ], None, animStopped) self.__endCalled = False self.anim.start() def startTimedAnim(): self.anim = avg.ParallelAnim( [ avg.LinearAnim(self.nodes[0], "x", 200, 0, 60), avg.LinearAnim(self.nodes[1], "x", 400, 0, 120), ], None, animStopped, 200) self.__endCalled = False self.anim.start() def abortAnim(): self.anim.abort() def deleteAnim(): self.anim = None root = self.loadEmptyScene() self.nodes = [] for i in range(3): node = avg.ImageNode(id=str(i), pos=(64, i*20), href="rgb24-64x64.png") root.appendChild(node) self.nodes.append(node) player.setFakeFPS(10) self.__endCalled = False self.start(False, (startFireForgetAnim, lambda: self.assertEqual(avg.getNumRunningAnims(), 2), None, startAnim, lambda: self.assertEqual(avg.getNumRunningAnims(), 3), lambda: self.compareImage("testParallelAnimC1"), lambda: self.assert_(self.anim.isRunning()), lambda: self.delay(200), lambda: self.assert_(not(self.anim.isRunning())), lambda: self.compareImage("testParallelAnimC2"), lambda: self.assert_(self.__endCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), startAnim, abortAnim, lambda: self.compareImage("testParallelAnimC3"), lambda: self.assert_(self.__endCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), startTimedAnim, lambda: self.delay(200), lambda: self.assert_(self.__endCalled), lambda: self.assertEqual(avg.getNumRunningAnims(), 0), startAnim )) self.nodes = []
def __dumpObjects(self): gc.collect() testHelper = player.getTestHelper() testHelper.dumpObjects() print 'Num anims: ', avg.getNumRunningAnims() print 'Num python objects: ', len(gc.get_objects())