<?php
require_once( __DIR__ . '/../../Event/Aggregator.php' );
require_once( __DIR__ . '/../../Event/Handler.php' );
require_once( __DIR__ . '/../../Event/GenericEvent.php' );
require_once( __DIR__ . '/../../Event/Filter.php' );
require_once( __DIR__ . '/../../Patterns/Publisher.php' );
use Falcraft\Event;
use Falcraft\Patterns;
echo "Falcraft\\Event\\Aggregator.php Test\n";
echo "----------------------------------\n\n";
echo "Basic Instantiation -- \n\n";
echo " Empty Instantiation -> ";
$success = true;
$aggregator = null;
try {
$aggregator = new Event\Aggregator();
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n\n";
} else {
echo "Failure...\n\n";
}
echo "Basic Operations -- \n\n";
$success = true;
$handler = null;
try {
echo " Instantiate Handler With Closure -> ";
$handler = new Event\Handler(
null,
function($e){echo "Aggregator: " . $e->getData() . "\n";},
null,
Event\Handler::DEFAULT_PRIORITY,
array('strict' => true)
);
echo $handler ? "Success!\n" : "Failure...\n";
echo " Attach Handler to Aggregator -> ";
$aggregator->attachListener($handler);
echo "Success!\n";
} catch (\Exception $e) {
$success = false;
}
if (!$success) {
echo "EXCEPTION RAISED\n\n";
}
$success = true;
$publisher = null;
try {
echo " Instantiate Publisher -> ";
$publisher = new Patterns\Publisher();
echo $publisher ? "Success!\n" : "Failure...\n";
echo " Add Publisher to Aggregate -> ";
$aggregator->addPublisher($publisher);
echo "Success!\n";
} catch (\Exception $e) {
$success = false;
}
if (!$success) {
echo "EXCEPTION RAISED\n\n";
}
$success = true;
$event1 = null;
try {
echo " Instantiating Generic Event (tag1) -> ";
$event1 = new Event\GenericEvent(
null,
null,
null,
null,
1,
array('tag1')
);
echo $event1 ? "Success!\n" : "Failure...\n";
echo " Fire Event -> ";
$publisher->setState($event1);
echo "\n";
} catch (\Exception $e) {
$success = false;
}
if (!$success) {
echo "EXCEPTION RAISED\n\n";
}
echo "\nExtended Operations -- \n\n";
echo " Multiple Publishers -- \n\n";
$success = true;
$publisher2 = $event2 = null;
try {
echo " Instantiate Publisher2 -> ";
$publisher2 = new Patterns\Publisher();
echo $publisher2 ? "Success!\n" : "Failure...\n";
echo " Add Publisher to Aggregate -> ";
$aggregator->addPublisher($publisher2);
echo "Success!\n";
echo " Instantiate Event2 (tag2) -> ";
$event2 = new Event\GenericEvent(
null,
null,
null,
null,
2,
array('tag2')
);
echo $event2 ? "Success!\n" : "Failure...\n";
} catch (\Exception $e) {
$success = false;
}
if (!$success) {
echo "EXCEPTION RAISED!\n\n";
}
$success = true;
try {
echo " Fire Publisher2 With Event2 -> ";
$publisher2->setState($event2);
echo "\n";
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo " Success!\n";
} else {
echo " Failure...\n";
}
$success = true;
try {
echo " Remove Publisher(1) -> ";
$aggregator->removePublisher($publisher);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
$success = true;
try {
echo " Fire Publisher(1) with Event1 -> ";
$publisher->setState($event1);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n\n";
} else {
echo "Failure...\n\n";
}
echo " Multiple Observers -- \n\n";
$success = true;
$handler2 = null;
try {
echo " Instantiate Handler2 (Closure) -> ";
$handler2 = new Event\Handler(
null,
function($e){echo "(Handler2) Aggregator: " . $e->getData();},
null,
Event\Handler::DEFAULT_PRIORITY,
array('strict' => true)
);
echo $handler2 ? "Success\n" : "Failure...\n";
echo " Attach Handler2 to Aggregate -> ";
$aggregator->attachListener($handler2);
echo "Success!\n";
} catch (\Exception $e) {
$success = false;
}
if (!$success) {
echo "EXCEPTION RAISED!\n\n";
}
$success = true;
try {
echo " Fire Publisher2 with Event2 -> ";
$publisher2->setState($event2);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo " Success!\n\n";
} else {
echo " Failure...\n\n";
}
echo " Filter -- \n";
$success = true;
try {
echo " Instantiate Filter (tag1) -> ";
$filter = new Event\Filter();
$filter->setState(array('tags' => array('tag1')));
echo $filter ? "Success!\n" : "Failure...\n";
echo " Set Filter on Aggregate -> ";
$aggregator->setFilter($filter);
echo "Success!\n";
} catch (\Exception $e) {
$success = false;
}
$success = true;
try {
echo " Fire Publisher2 with Event2 -> ";
$publisher2->setState($event2);
echo "\n Fire Publisher2 with Event1 -> ";
$publisher2->setState($event1);
echo "\n";
} catch (\Exception $e) {
$success = false;
}
if (!$success) {
echo "EXCEPTION RAISED\n\n";
}
|