Skip to content

Instantly share code, notes, and snippets.

@julesfern
Created September 29, 2010 16:28
Show Gist options
  • Save julesfern/603060 to your computer and use it in GitHub Desktop.
Save julesfern/603060 to your computer and use it in GitHub Desktop.
[Test(async, description="Ensures that properties with a defined transition and non-zero duration are not altered immediately")]
public function transitionsWithDurationsAreAnimated():void
{
var el:UIElement = new UIElement();
el.localStyleString = "transition-property: padding-left; transition-duration: 2s; transition-delay: 1s; transition-timing-function: linear; padding-left: 10px;";
Assert.assertTrue(el.shouldTransitionProperty("padding-left"));
Assert.assertFalse(el.shouldTransitionProperty("padding-right"));
var delayTimer:Timer = new Timer(800, 1);
var intermediateTimer:Timer = new Timer(1400, 1);
var completeTimer:Timer = new Timer(2300, 1);
var asyncDelay:Function = Async.asyncHandler(
this, this.onTransitionDelayTimerComplete, 1000, { "el": el }, this.onTransitionWithDurationTimeout
);
var asyncIntermediate:Function = Async.asyncHandler(
this, this.onTransitionIntermediateTimerComplete, 1800, { "el": el }, this.onTransitionWithDurationTimeout
);
var asyncComplete:Function = Async.asyncHandler(
this, this.onTransitionWithDurationTimerComplete, 2500, { "el": el }, this.onTransitionWithDurationTimeout
);
el.localStyleString = "transition-property: padding-left; transition-duration: 2s; transition-delay: 1s; transition-timing-function: linear; padding-left: 100px;";
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, asyncDelay);
delayTimer.start();
intermediateTimer.addEventListener(TimerEvent.TIMER_COMPLETE, asyncIntermediate);
intermediateTimer.start();
completeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, asyncComplete);
completeTimer.start();
Assert.assertEquals(10, (el.getStyleValue("padding-left") as SizeValue).evaluateSize(el));
}
protected function onTransitionDelayTimerComplete(e:TimerEvent, passThru:Object):void
{
var el:UIElement = (passThru.el as UIElement);
var pl:Number = (el.getStyleValue("padding-left") as SizeValue).evaluateSize(el);
Assert.assertEquals(10, pl);
}
protected function onTransitionIntermediateTimerComplete(e:TimerEvent, passThru:Object):void
{
var el:UIElement = (passThru.el as UIElement);
var pl:Number = (el.getStyleValue("padding-left") as SizeValue).evaluateSize(el);
Assert.assertTrue(pl > 10);
Assert.assertTrue(pl < 100);
}
protected function onTransitionWithDurationTimerComplete(e:TimerEvent, passThru:Object):void
{
var el:UIElement = (passThru.el as UIElement);
var pl:Number = (el.getStyleValue("padding-left") as SizeValue).evaluateSize(el);
Assert.assertEquals(100, pl);
}
protected function onTransitionWithDurationTimeout(passThru:Object):void
{
Assert.fail("timed out");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment