Skip to content

Instantly share code, notes, and snippets.

@snaka
Last active December 23, 2015 23:28
Show Gist options
  • Select an option

  • Save snaka/6709766 to your computer and use it in GitHub Desktop.

Select an option

Save snaka/6709766 to your computer and use it in GitHub Desktop.
FlexUnit4 での SequenceRunner を使ったテストをシンプルに書くためのユーティリティクラス/関数 ref: http://qiita.com/snaka/items/a8cbf047b71e959137bc
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import org.flexunit.asserts.fail;
import org.fluint.sequence.ISequenceStep;
import org.fluint.sequence.SequenceCaller;
import org.fluint.sequence.SequenceDelay;
import org.fluint.sequence.SequenceEventDispatcher;
import org.fluint.sequence.SequenceRunner;
import org.fluint.sequence.SequenceWaiter;
/**
* FluentableSequenceRunner インスタンスを生成するユーティリティ関数
*/
function sequence( testCase:* ):SimplifiedSequenceRunner
{
return new SimplifiedSequenceRunner( testCase );
}
/**
* SequenceWaiter インスタンスを生成するユーティリティ関数
*/
function waitEvent( target:IEventDispatcher, eventName:String ):ISequenceStep
{
return new SequenceWaiter( target, eventName, 3000, function( obj:Object ):void {
fail( "Timeout Occurred before expected event (" + eventName + ")" );
} );
}
/**
* SequenceWaiter インスタンスを生成するユーティリティ関数
*/
function dispatchEvent( target:EventDispatcher, event:Event ):ISequenceStep
{
return new SequenceEventDispatcher( target, event );
}
/**
* SequenceDelay インスタンスを生成するユーティリティ関数
*/
function delay( milliSec:int ):ISequenceStep
{
return new SequenceDelay( milliSec );
}
/**
* SequenceCaller インスタンスを生成するユーティリティ関数
*/
function call( target:IEventDispatcher, procedure:Function ):ISequenceStep
{
return new SequenceCaller( target, procedure );
}
/**
* SequenceRunner を使用したテストを簡潔に記述するためのユーティリティクラス
*/
class SimplifiedSequenceRunner
{
private var runner:SequenceRunner;
/**
* コンストラクタ
*/
public function SimplifiedSequenceRunner( testCase:* )
{
runner = new SequenceRunner( testCase );
}
/**
* SequenceStep の追加
*/
public function steps( ...args ):SimplifiedSequenceRunner
{
for each ( var step:ISequenceStep in args )
runner.addStep( step );
return this;
}
/**
* AssertHandler の追加
*/
public function assertion( assertFunc:Function ):SimplifiedSequenceRunner
{
runner.addAssertHandler( function( evt:Event, obj:Object ):void {
assertFunc();
}, null );
return this;
}
/**
* SequenceRunner の実行
*/
public function run():void
{
runner.run();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment