56
85
lambda: self.assert_(anim.getNumRunningAnims() == 0),
57
86
lambda: self.compareImage(imgBaseName+"3", False),
58
lambda: self.assert_(self.__runningAnim.isDone),
87
lambda: self.assert_(self.__anim.isDone),
60
89
lambda: self.assert_(not(self.__onStopCalled)),
63
lambda: self.assert_(anim.getNumRunningAnims() == 1)
92
lambda: self.assert_(anim.getNumRunningAnims() == 1),
65
self.__runningAnim = None
67
97
def testLinearAnim(self):
68
def createAnim(node, onStop):
69
return anim.LinearAnim(node, "x", 200, 0, 100, False, onStop)
70
self.testAnimType(createAnim, "testLinearAnim")
98
Player.loadFile("image.avg")
99
node = Player.getElementByID("test")
100
curAnim = anim.LinearAnim(node, "x", 200, 0, 100, False)
101
self.testAnimType(curAnim, "testLinearAnim")
103
def testLinearAnimZeroDuration(self):
105
self.__onStopCalled = True
108
self.__onStopCalled = False
109
node = Player.getElementByID("test")
112
Player.loadFile("image.avg")
113
node = Player.getElementByID("test")
114
self.__anim = anim.LinearAnim(node, "x", 0, 0, 100, False)
115
self.__anim.setHandler(onStop, None)
116
self.__onStopCalled = False
117
Player.setFakeFPS(10)
120
lambda: self.compareImage("testLinearAnimZeroDuration1", False),
121
lambda: self.assert_(anim.getNumRunningAnims() == 0),
122
lambda: self.assert_(self.__onStopCalled),
123
lambda: self.assert_(self.__anim.isDone)
72
127
def testEaseInOutAnim(self):
73
def createAnim(node, onStop):
74
return anim.EaseInOutAnim(node, "x", 400, 0, 100, 100, 100,
76
self.testAnimType(createAnim, "testEaseInOutAnim")
128
Player.loadFile("image.avg")
129
node = Player.getElementByID("test")
130
curAnim = anim.EaseInOutAnim(node, "x", 400, 0, 100, 100, 100, False)
131
self.testAnimType(curAnim, "testEaseInOutAnim")
78
133
def testSplineAnim(self):
79
def createAnim(node, onStop):
80
return anim.SplineAnim(node, "x", 300, 0, 0, 100, 0,
82
self.testAnimType(createAnim, "testSplineAnim")
134
Player.loadFile("image.avg")
135
node = Player.getElementByID("test")
136
curAnim = anim.SplineAnim(node, "x", 300, 0, 0, 100, 0, False)
137
self.testAnimType(curAnim, "testSplineAnim")
84
139
def testContinuousAnim(self):
115
177
Player.setTimeout(1, onStart)
180
def testWaitAnim(self):
182
self.__endCalled = True
185
self.anim = anim.WaitAnim(200, animStopped, False)
189
Player.setFakeFPS(10)
190
self.__endCalled = False
191
self.start("image.avg",
193
lambda: self.assert_(not(self.anim.isDone())),
196
lambda: self.assert_(self.anim.isDone()),
197
lambda: self.assert_(self.__endCalled)
200
def testStateAnim(self):
201
def state2Callback():
202
self.__state2CallbackCalled = True
205
node = Player.getElementByID("test")
206
self.anim = anim.StateAnim(
207
{"STATE1": anim.LinearAnim(node, "x", 200, 64, 128),
208
"STATE2": anim.LinearAnim(node, "x", 200, 128, 64),
209
"STATE3": anim.WaitAnim()},
210
{"STATE1": anim.AnimTransition("STATE2", state2Callback),
211
"STATE2": anim.AnimTransition("STATE3")})
213
Player.setFakeFPS(10)
214
self.__state2CallbackCalled = False
215
self.start("image.avg",
217
lambda: self.compareImage("testStateAnim1", False),
218
lambda: self.anim.setState("STATE1"),
220
lambda: self.compareImage("testStateAnim2", False),
221
lambda: self.anim.getState() == "STATE2",
222
lambda: self.compareImage("testStateAnim3", False),
223
lambda: self.assert_(self.__state2CallbackCalled),
224
lambda: self.anim.getState() == "STATE3",
225
lambda: self.compareImage("testStateAnim4", False),
226
lambda: self.anim.setState("STATE1"),
227
lambda: self.assert_(anim.getNumRunningAnims() == 1),
228
lambda: self.compareImage("testStateAnim5", False)
231
def testParallelAnim(self):
233
self.__endCalled = True
236
node0 = Player.getElementByID("mainimg")
237
node1 = Player.getElementByID("test")
238
node2 = Player.getElementByID("test1")
239
self.anim = anim.ParallelAnim(
240
[ anim.LinearAnim(node0, "x", 200, 0, 2),
241
anim.SplineAnim(node1, "x", 400, 0, 40, 0, 0),
242
anim.EaseInOutAnim(node2, "x", 300, 129, 99, 100, 100)
247
self.__endCalled = False
248
Player.setFakeFPS(10)
249
self.start("image.avg",
251
lambda: self.assert_(anim.getNumRunningAnims() == 3),
252
lambda: self.assert_(not(self.anim.isDone())),
253
lambda: self.compareImage("testParallelAnims1", False),
256
lambda: self.compareImage("testParallelAnims2", False),
257
lambda: self.assert_(self.anim.isDone()),
258
lambda: self.assert_(self.__endCalled)
118
261
def testDraggable(self):
119
262
def onDragStart(event):
120
263
self.__dragStartCalled = True
121
265
def onDragEnd(event):
122
266
self.__dragEndCalled = True
124
269
Helper.fakeMouseEvent(avg.CURSORDOWN, True, False, False, 140, 40, 1)
126
272
Helper.fakeMouseEvent(avg.CURSORMOTION, True, False, False, 150, 50, 1)
128
275
Helper.fakeMouseEvent(avg.CURSORUP, True, False, False, 140, 40, 1)
129
277
self.__dragEndCalled = False
130
278
self.__dragStartCalled = False
131
279
Helper = Player.getTestHelper()
132
280
Player.loadFile("image.avg")
133
281
draggable.init(avg)
134
dragger = draggable.Draggable(Player.getElementByID("testhue"),
282
dragger = draggable.Draggable(Player.getElementByID("test1"),
135
283
onDragStart, onDragEnd)
231
391
def testTextArea(self):
232
def createTextAreaSet():
234
self.ctx1 = textarea.FocusContext()
235
self.ctx2 = textarea.FocusContext()
237
self.ta1 = textarea.TextArea(Player.getElementByID('placeholder'), self.ctx1, id='ta1')
238
self.ta1.setStyle(font='Bitstream Vera Sans', variant="Roman", size=4, multiline=True)
239
self.ta1.setText("Lorem ipsum")
241
self.ta2 = textarea.TextArea(Player.getElementByID('placeholder_2'), self.ctx1, id='ta2')
242
self.ta2.setStyle(font='Bitstream Vera Sans', variant="Roman", size=2, multiline=False)
244
self.ta3 = textarea.TextArea(Player.getElementByID('placeholder_3'), self.ctx2, '1x1_white.png', True, id='ta3')
245
self.ta3.setStyle(font='Bitstream Vera Sans', variant="Roman", size=3, multiline=True)
247
textarea.setActiveFocusContext(self.ctx1)
393
self.ta1 = textarea.TextArea(Player.getElementByID('ph1'), id='ta1')
394
self.ta1.setStyle(font='Bitstream Vera Sans', variant='Roman',
395
fontsize=16, multiline=True, color='FFFFFF')
396
self.ta1.setText('Lorem ipsum')
397
self.ta1.setFocus(True) # TODO: REMOVE
399
self.ta2 = textarea.TextArea(Player.getElementByID('ph2'), id='ta2')
400
self.ta2.setStyle(font='Bitstream Vera Sans', variant='Roman',
401
fontsize=14, multiline=False, color='FFFFFF')
402
self.ta2.setText('sit dolor')
403
self.ta2.setFocus(True) # TODO: REMOVE
249
405
def setAndCheck(ta, text):
251
407
self.assert_(ta.getText() == text)
410
ta.onKeyDown(textarea.KEYCODE_FORMFEED)
411
self.assert_(ta.getText() == '')
414
self.ta1.setText(u'some ùnìcöde')
415
self.ta1.onKeyDown(textarea.KEYCODES_BACKSPACE[0])
416
self.assert_(self.ta1.getText() == u'some ùnìcöd')
417
self.ta1.onKeyDown(textarea.KEYCODES_BACKSPACE[1])
418
self.ta1.onKeyDown(textarea.KEYCODES_BACKSPACE[0])
419
self.assert_(self.ta1.getText() == u'some ùnìc')
420
self.ta1.onKeyDown(ord(u'Ä'))
421
self.assert_(self.ta1.getText() == u'some ùnìcÄ')
423
def testSpecialChars():
425
self.ta1.onKeyDown(ord(u'&'))
426
self.ta1.onKeyDown(textarea.KEYCODES_BACKSPACE[0])
427
self.assert_(self.ta1.getText() == '')
252
429
def checkSingleLine():
254
431
self.ta2.setText('')
256
print text, self.ta2.getText()
257
self.assert_(len(text) < 60)
258
self.ctx1.keyCharPressed('X')
433
self.assert_(len(text) < 20)
434
self.ta2.onKeyDown(ord(u'A'))
260
436
if text != self.ta2.getText():
437
self.assert_(len(text) == 16)
263
self.ctx1.keyUCodePressed(textarea.KEYCODE_FORMFEED)
264
self.assert_(self.ta2.getText() == '')
266
textarea.setActiveFocusContext(self.ctx2)
268
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec massa nunc, pretium sed,
269
sagittis mollis, dignissim vitae, erat. Vestibulum mattis, erat nec pulvinar lacìnia,
271
self.ta3.setText(text)
272
self.assert_(len(self.ta3.getText()) == len(text)-1)
274
textarea.setActiveFocusContext(self.ctx1)
275
self.ctx1.cycleFocus()
276
self.__sendEvent(avg.CURSORDOWN, 20, 20)
277
self.__sendEvent(avg.CURSORUP, 20, 20)
278
def testClickFocus():
279
self.assert_(self.ctx1.getFocused())
280
self.assert_(self.ctx1.getFocused().getID() == 'ta1')
281
self.ctx1.keyUCodePressed(textarea.KEYCODE_FORMFEED)
282
self.ctx1.keyCharPressed('X')
283
self.assert_(self.ta1.getText() == 'X')
285
self.ta1.setText(u'some ùnìcöde')
286
self.ctx1.keyUCodePressed(textarea.KEYCODES_BACKSPACE[0])
287
self.assert_(self.ta1.getText() == u'some ùnìcöd')
288
self.ctx1.keyUCodePressed(textarea.KEYCODES_BACKSPACE[1])
289
self.ctx1.keyUCodePressed(textarea.KEYCODES_BACKSPACE[0])
290
self.assert_(self.ta1.getText() == u'some ùnìc')
291
self.ctx1.keyCharPressed('ò')
292
self.assert_(self.ta1.getText() == u'some ùnìcò')
293
def testSpecialChars():
295
self.ctx1.keyCharPressed('&')
296
self.ctx1.keyUCodePressed(textarea.KEYCODES_BACKSPACE[0])
297
self.assert_(self.ta1.getText() == '')
299
Helper = Player.getTestHelper()
300
Helper.fakeKeyEvent(avg.KEYDOWN, 65, 65, "A", 65, 0)
301
Helper.fakeKeyEvent(avg.KEYUP, 65, 65, "A", 65, 0)
302
Helper.fakeKeyEvent(avg.KEYDOWN, 59, 59, ";", 242, 0)
303
Helper.fakeKeyEvent(avg.KEYUP, 59, 59, ";", 242, 0)
305
self.assert_(self.ta1.getText() == u'Aò')
440
Player.loadString("""
441
<avg width="160" height="120">
442
<div id="ph1" x="2" y="2" width="156" height="96"/>
443
<div id="ph2" x="2" y="100" width="156" height="18"/>
307
448
textarea.init(avg, False)
308
self.start("TextAreaTest.avg",
310
lambda: self.assert_(self.ta1.getText() != 'Lorem Ipsum'),
311
lambda: setAndCheck(self.ta1, ''),
312
lambda: setAndCheck(self.ta2, 'Lorem Ipsum'),
451
lambda: self.assert_(self.ta1.getText() == 'Lorem ipsum'),
452
lambda: setAndCheck(self.ta1, ''),
453
lambda: setAndCheck(self.ta2, 'Lorem Ipsum'),
455
lambda: self.compareImage("testTextArea1", True),
458
lambda: self.compareImage("testTextArea2", True),
461
def testFocusContext(self):
464
self.ctx1 = textarea.FocusContext()
465
self.ctx2 = textarea.FocusContext()
467
self.ta1 = textarea.TextArea(Player.getElementByID('ph1'),
469
self.ta1.setStyle(font='Bitstream Vera Sans', variant='Roman',
470
fontsize=16, multiline=True, color='FFFFFF')
471
self.ta1.setText('Lorem ipsum')
473
self.ta2 = textarea.TextArea(Player.getElementByID('ph2'),
475
self.ta2.setStyle(font='Bitstream Vera Sans', variant='Roman',
476
fontsize=14, multiline=False, color='FFFFFF')
477
self.ta2.setText('dolor')
479
self.ta3 = textarea.TextArea(Player.getElementByID('ph3'),
480
self.ctx2, disableMouseFocus=True, id='ta3')
481
self.ta3.setStyle(font='Bitstream Vera Sans', variant='Roman',
482
fontsize=14, multiline=True, color='FFFFFF')
483
self.ta3.setText('dolor sit amet')
485
textarea.setActiveFocusContext(self.ctx1)
488
helper = Player.getTestHelper()
489
helper.fakeKeyEvent(avg.KEYDOWN, 65, 65, "A", 65, 0)
490
helper.fakeKeyEvent(avg.KEYUP, 65, 65, "A", 65, 0)
491
helper.fakeKeyEvent(avg.KEYDOWN, 66, 66, "B", 66, 0)
492
helper.fakeKeyEvent(avg.KEYUP, 66, 66, "B", 66, 0)
493
helper.fakeKeyEvent(avg.KEYDOWN, 67, 67, "C", 67, 0)
494
helper.fakeKeyEvent(avg.KEYUP, 67, 67, "C", 67, 0)
497
self.ctx1.cycleFocus()
503
self.__sendEvent(avg.CURSORDOWN, 20, 70)
504
self.__sendEvent(avg.CURSORUP, 20, 70)
506
Player.loadString("""
507
<avg width="160" height="120">
508
<div id="ph1" x="2" y="2" width="156" height="54"/>
509
<div id="ph2" x="2" y="58" width="76" height="54"/>
510
<div id="ph3" x="80" y="58" width="76" height="54">
511
<image href="1x1_white.png" width="76" height="54"/>
517
lambda: self.compareImage("testFocusContext1", True),
519
lambda: self.compareImage("testFocusContext2", True),
522
lambda: self.compareImage("testFocusContext3", True),
525
lambda: self.compareImage("testFocusContext4", True),
528
lambda: self.compareImage("testFocusContext5", True),
324
531
def __sendEvent(self, type, x, y):
325
532
Helper = Player.getTestHelper()
326
533
Helper.fakeMouseEvent(type, True, False, False, x, y, 1)
329
def pythonTestSuite():
330
suite = unittest.TestSuite()
331
suite.addTest(PythonTestCase("testLinearAnim"))
332
suite.addTest(PythonTestCase("testEaseInOutAnim"))
333
suite.addTest(PythonTestCase("testSplineAnim"))
334
suite.addTest(PythonTestCase("testContinuousAnim"))
335
suite.addTest(PythonTestCase("testDraggable"))
336
suite.addTest(PythonTestCase("testButton"))
337
suite.addTest(PythonTestCase("testCheckbox"))
338
suite.addTest(PythonTestCase("testTextArea"))
536
def pythonTestSuite (tests):
539
"testLinearAnimZeroDuration",
542
"testContinuousAnim",
552
return AVGTestSuite (availableTests, PythonTestCase, tests)
341
554
Player = avg.Player.get()