<?php 
 
require_once( __DIR__ . '/../../Event/Handler.php' ); 
require_once( __DIR__ . '/../../Event/GenericEvent.php' ); 
require_once( __DIR__ . '/../../Event/Tracker.php' ); 
     
use Falcraft\Event; 
     
echo "Falcraft\\Event\\Handler.php Test\n"; 
echo "-------------------------------\n\n"; 
 
echo "Basic Instantiation -- \n"; 
 
echo "    Instantiate With Closure -> "; 
 
$success = true; 
 
$handler = null; 
 
try { 
    $handler = new Event\Handler( 
        null, 
        function ($e) {echo "Inside Closure";}, 
        null, 
        Event\Handler::DEFAULT_PRIORITY, 
        array('strict' => true) 
    ); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n"; 
} else { 
    echo "Failure...\n"; 
} 
 
echo "Basic Operation -- \n"; 
 
$success = true; 
 
$publisher = $event = null; 
 
try { 
    echo "    publisher = new Tracker()\n"; 
    $publisher = new Event\Tracker(); 
     
    echo "    event = new GenericEvent()\n"; 
    $event = new Event\GenericEvent( 
        null, 
        null, 
        null, 
        null 
    ); 
     
    echo "    publisher->attachListener( handle )\n"; 
    $publisher->attachListener($handler); 
     
    echo "    publisher->triggerObject( event ) -> "; 
    $publisher->triggerObject($event); 
    echo "\n"; 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
echo "Additional Operations -- \n\n"; 
 
echo "    Class Method -- \n"; 
 
$success = true; 
 
try { 
    echo "        Define Class A\n"; 
    class A { 
        public static function staticFunction($e) 
        { 
            echo "Inside Static Function"; 
        } 
    } 
     
    echo "        handler->setObject( A ) \n"; 
    $handler->setObject('A'); 
     
    echo "        handler->setNamespace( __NAMESPACE__ )\n"; 
    $handler->setNamespace(__NAMESPACE__); 
     
    echo "        handler->setFunction( staticFunction )\n"; 
    $handler->setFunction('staticFunction'); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
echo "        Fire! -> "; 
 
$success = true; 
 
try { 
    $publisher->setState($event); 
    echo "\n"; 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
echo "    Object Method -- \n"; 
 
$success = true; 
 
$object = null; 
 
try { 
    echo "        Define Class B\n"; 
     
    class B extends A 
    { 
        public function publicMethod($e) 
        { 
            echo "Inside Public Method"; 
        } 
    } 
     
    echo "        object = new B\n"; 
    $object = new B(); 
     
    echo "        handler->setObject( object )\n"; 
    $handler->setObject($object); 
     
    echo "        handler->setFunction( publicMethod )\n"; 
    $handler->setFunction('publicMethod'); 
     
    echo "        handler->setNamespace( )\n"; 
    $handler->setNamespace(''); 
     
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
echo "        Fire! -> "; 
 
$success = true; 
 
try { 
    $publisher->setState($event); 
    echo "\n"; 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
echo "    Function -- \n"; 
 
try { 
    echo "        Define Function\n"; 
    function func($e)  
    { 
        echo "Inside Function"; 
    } 
     
    echo "        handler->setFunction( func )\n"; 
    $handler->setFunction('func'); 
     
    echo "        handler->setObject( null )\n"; 
    $handler->setObject(null); 
     
    echo "        handler->setNamespace( __NAMESPACE__ )\n"; 
    $handler->setNamespace(__NAMESPACE__); 
     
} catch (\Exception $e) { 
    $success = false; 
} 
 
echo "\n        Fire! -> "; 
 
$success = true; 
 
try { 
    $publisher->setState($event); 
    echo "\n"; 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
 |