<?php
							 | 
						|
								/**
							 | 
						|
								 * Flight: An extensible micro-framework.
							 | 
						|
								 *
							 | 
						|
								 * @copyright   Copyright (c) 2012, Mike Cao <mike@mikecao.com>
							 | 
						|
								 * @license     MIT, http://flightphp.com/license
							 | 
						|
								 */
							 | 
						|
								
							 | 
						|
								require_once 'vendor/autoload.php';
							 | 
						|
								require_once __DIR__.'/../flight/autoload.php';
							 | 
						|
								require_once __DIR__.'/classes/Hello.php';
							 | 
						|
								
							 | 
						|
								class MapTest extends PHPUnit_Framework_TestCase
							 | 
						|
								{
							 | 
						|
								    /**
							 | 
						|
								     * @var \flight\Engine
							 | 
						|
								     */
							 | 
						|
								    private $app;
							 | 
						|
								
							 | 
						|
								    function setUp() {
							 | 
						|
								        $this->app = new \flight\Engine();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // Map a closure
							 | 
						|
								    function testClosureMapping(){
							 | 
						|
								        $this->app->map('map1', function(){
							 | 
						|
								            return 'hello';
							 | 
						|
								        });
							 | 
						|
								
							 | 
						|
								        $result = $this->app->map1();
							 | 
						|
								
							 | 
						|
								        $this->assertEquals('hello', $result);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // Map a function
							 | 
						|
								    function testFunctionMapping(){
							 | 
						|
								        $this->app->map('map2', function(){
							 | 
						|
								            return 'hello';
							 | 
						|
								        });
							 | 
						|
								
							 | 
						|
								        $result = $this->app->map2();
							 | 
						|
								
							 | 
						|
								        $this->assertEquals('hello', $result);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // Map a class method
							 | 
						|
								    function testClassMethodMapping(){
							 | 
						|
								        $h = new Hello();
							 | 
						|
								
							 | 
						|
								        $this->app->map('map3', array($h, 'sayHi'));
							 | 
						|
								
							 | 
						|
								        $result = $this->app->map3();
							 | 
						|
								
							 | 
						|
								        $this->assertEquals('hello', $result);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // Map a static class method
							 | 
						|
								    function testStaticClassMethodMapping(){
							 | 
						|
								        $this->app->map('map4', array('Hello', 'sayBye'));
							 | 
						|
								
							 | 
						|
								        $result = $this->app->map4();
							 | 
						|
								
							 | 
						|
								        $this->assertEquals('goodbye', $result);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // Unmapped method
							 | 
						|
								    function testUnmapped() {
							 | 
						|
								        $this->setExpectedException('Exception', 'doesNotExist must be a mapped method.');
							 | 
						|
								
							 | 
						|
								        $this->app->doesNotExist();
							 | 
						|
								    }
							 | 
						|
								}
							 |