Skip to content

Instantly share code, notes, and snippets.

@weyert
Created May 2, 2010 14:51
Show Gist options
  • Save weyert/387171 to your computer and use it in GitHub Desktop.
Save weyert/387171 to your computer and use it in GitHub Desktop.
package tests
{
import assets.MainButton_Symbol;
import assets.dialogs.HelpDialog_Symbol;
import ch.nothing.flare.display.screens.ScreenManager;
import ch.nothing.flare.events.ScreenEvent;
import ch.nothing.flare.ui.Button;
import ch.nothing.flare.ui.inExistingViewOf;
import com.newloop.roboteyes.drivers.DisplayObjectDriver;
import com.newloop.roboteyes.drivers.DisplayObjectDriverList;
import com.newloop.roboteyes.drivers.InteractiveObjectDriver;
import com.newloop.roboteyes.inViewOf;
import flash.display.DisplayObjectContainer;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import org.flexunit.asserts.assertNotNull;
import org.flexunit.asserts.assertStrictlyEquals;
import org.flexunit.asserts.assertTrue;
import org.flexunit.async.Async;
import org.flexunit.runner.notification.async.WaitingListener;
import org.fluint.uiImpersonation.UIImpersonator;
import org.hamcrest.object.instanceOf;
import views.components.MainButton;
import views.dialogs.HelpDialog;
import views.dialogs.HighscoreDialog;
import views.dialogs.TimelineDialog;
import views.screens.ProfileScreen;
import views.screens.StartScreen;
import views.screens.TimelineScreen;
public class StartScreenTests
{
private static var screenManager: ScreenManager;
private static var screenContainer: Sprite;
[Before]
public function setUp():void
{
}
[After]
public function tearDown():void
{
}
[BeforeClass]
public static function setUpBeforeClass():void
{
screenContainer = new Sprite();
UIImpersonator.addChild( screenContainer );
screenManager = new ScreenManager( screenContainer );
// inject the screen manager instance of the test unit
Application.screenManager = screenManager;
}
[AfterClass]
public static function tearDownAfterClass():void
{
UIImpersonator.removeAllChildren();
screenContainer = null;
screenManager = null;
}
///////
// TESTING
[Test(async)]
public function openStartScreen(): void {
Async.handleEvent( this, screenManager, ScreenEvent.OPENED, handleScreenOpened, 500 );
screenManager.openScreen( StartScreen, true, false );
}
private function handleScreenOpened(event: ScreenEvent, ... args): void {
trace("handleScreenOpened()");
assertTrue( screenManager.currentScreen is TimelineScreen );
assertTrue( screenManager.currentScreen is StartScreen );
}
[Test(async, order=4)]
public function clickOnStart(): void {
var screenView: DisplayObjectContainer = TimelineScreen(screenManager.currentScreen).view;
var screen: DisplayObjectContainer = TimelineScreen(screenManager.currentScreen);
assertNotNull( screen );
assertTrue( inExistingViewOf(screenView).getA(MainButton_Symbol) is DisplayObjectDriverList );
var buttonSprite: InteractiveObjectDriver = inExistingViewOf(screenView).getA(MainButton_Symbol).withProperty("name", "startButton") as InteractiveObjectDriver;
assertNotNull(buttonSprite);
// after the click on the button the screen manager should switch to the ProfileScreen, so we expect
// two things: OPENED/CLOSED event and the currentScreen to be ProfileScreen
Async.handleEvent( this, screenManager, ScreenEvent.OPENED, function(event: ScreenEvent, ... args): void {
assertTrue( ScreenManager(event.target).currentScreen, instanceOf( ProfileScreen ) );
ScreenManager(event.target).openScreen( StartScreen );
}, 1000 );
buttonSprite.click();
}
[Test(async, order=2)]
public function clickOnHelp(): void {
var screenView: DisplayObjectContainer = TimelineScreen(screenManager.currentScreen).view;
var screen: DisplayObjectContainer = TimelineScreen(screenManager.currentScreen);
assertNotNull( screen );
assertTrue( screen, instanceOf(StartScreen) );
assertTrue( inExistingViewOf(screenView).getA(MainButton_Symbol) is DisplayObjectDriverList );
var buttonSprite: InteractiveObjectDriver = inExistingViewOf(screenView).getA(MainButton_Symbol).withProperty("name", "helpButton") as InteractiveObjectDriver;
assertNotNull(buttonSprite);
Async.handleEvent( this, buttonSprite.item, Event.SELECT, function(event: Event, ... args): void {
assertNotNull( inExistingViewOf(screen).getA(HelpDialog).inViewOf(HelpDialog) );
}, 2000 );
buttonSprite.click();
}
[Test(async, order=3)]
public function clickOnHighscore(): void {
var screenView: DisplayObjectContainer = TimelineScreen(screenManager.currentScreen).view;
var screen: DisplayObjectContainer = TimelineScreen(screenManager.currentScreen);
assertNotNull( screen );
assertTrue( screen, instanceOf(StartScreen) );
assertTrue( inExistingViewOf(screenView).getA(MainButton_Symbol) is DisplayObjectDriverList );
var buttonSprite: InteractiveObjectDriver = inExistingViewOf(screenView).getA(MainButton_Symbol).withProperty("name", "highscoreButton") as InteractiveObjectDriver;
assertNotNull(buttonSprite);
Async.handleEvent( this, buttonSprite.item, Event.SELECT, function(event: Event, ... args): void {
assertNotNull( inExistingViewOf(screen).getA(HighscoreDialog).inViewOf(HighscoreDialog) );
}, 2000 );
buttonSprite.click();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment