<?php
require_once('../../../Data/Types/Priority.php');
require_once('../../../Data/Types/PriorityQueue.php');
require_once('../../../Data/Types/Stack.php');
require_once('../../../Data/Types/Restrictions.php');
require_once('../../../Data/Types/Type.php');
use Falcraft\Data\Types;
use Falcraft\Data\Types\Type;
echo "Falcraft\\Data\\Types\\PriorityQueue.php Test\n";
echo "------------------------------------------\n\n";
echo "Basic Instantiation -> ";
$success = true;
$testPriorityQueue = null;
//try {
$testPriorityQueue = new Types\PriorityQueue();
//} catch (\Exception $e) {
// $success = false;
//}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Array Instantiation -> ";
$success = true;
$testPriority0 = $testPriority1 = $testPriority2 = $testPriority3 = $testPriorityQueue = null;
try {
$testPriority0 = new Types\Priority('coffee', 10);
$testPriority1 = new Types\Priority('water', 5);
$testPriority2 = new Types\Priority('air', 11);
$testPriroity3 = new Types\Priority(42, 2);
$testPriorityQueue = new Types\PriorityQueue(array(
$testPriority0,
$testPriority1,
$testPriority2,
$testPriroity3,
),
null,
array('strict' => true,));
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n\n";
echo "getList() Internals -- \n\n";
var_dump($testPriorityQueue->getList());
echo "\n";
} else {
echo "Failure...\n";
}
echo "Pass Non-Priority Object to Constructor -> ";
$fail = true;
$testPriorityQueuePass = null;
try {
$testPriorityQueuePass = new Types\PriorityQueue(array($testPriority0, 'huh?',));
$fail = false;
} catch (\Exception $e) {
}
if ($fail) {
echo "Failure!\n";
} else {
echo "Success...\n";
}
echo "Instantiate and Pass (Data) with Custom Restrictions -> ";
$success = true;
$testPriorityQueueRestrictions = $testRestrictions = $testStack = null;
try {
$testStack = new Types\Stack();
$testRestrictions = new Types\Restrictions(array(Type::TYPED_OBJECT,),
array('Falcraft\\Data\\Types\\Stack'));
$testPriorityQueueRestrictions = new Types\PriorityQueue(
array(),
$testRestrictions,
array('strict' => true));
$testPriorityQueueRestrictions->push($testStack);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Priority Queue Operations -- \n\n";
echo " Population -> ";
$success = true;
try {
$testPriorityQueue->push(
new Types\Priority('towel', 7),
new Types\Priority('gas mask', 50),
new Types\Priority('cooler', 2));
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n\nQueue Internals -- \n\n";
var_dump($testPriorityQueue->getList());
echo "\n";
} else {
echo "Failure...\n";
}
echo " Top -> ";
try {
echo $testPriorityQueue->top() . "\n";
} catch (\Exception $e) {
echo "EXCEPTION CAUGHT!\n";
}
echo " Pop -> ";
$val = null;
try {
$val = $testPriorityQueue->pop();
echo "$val\n";
} catch(\Exception $e) {
echo "EXCEPTION CAUGHT!\n";
}
echo "\nQueue Internals --\n\n";
var_dump($testPriorityQueue->getList());
echo "\n";
echo " Bottom -> ";
try {
echo $testPriorityQueue->bottom() . "\n";
} catch(\Exception $e) {
echo "EXCEPTION CAUGHT!";
}
echo " Pull -> ";
$val = null;
try {
$val = $testPriorityQueue->pull();
echo "$val\n";
} catch(\Exception $e) {
echo "EXCEPTION CAUGHT!\n";
}
echo "\nQueue Internals --\n\n";
var_dump($testPriorityQueue->getList());
echo "\n";
echo " Delete ('air') -> ";
$success = true;
try {
$testPriorityQueue->delete('air');
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "\nQueue Internals --\n\n";
var_dump($testPriorityQueue->getList());
echo "\n";
echo " Delete Priority (5 'water') -> ";
$success = true;
try {
$testPriorityQueue->deletePriority(5);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "\nQueue Internals --\n\n";
var_dump($testPriorityQueue->getList());
echo "\n";
echo "Index Retrieval -- \n";
echo " Priorities >= 7 -> \n\n";
var_dump($testPriorityQueue->index(7, Types\PriorityQueue::HIGHER));
echo "\n";
echo " Priorities <= 7 -> \n\n";
var_dump($testPriorityQueue->index(7, Types\PriorityQueue::LOWER));
echo "\n";
echo " Priorities == 2 -> \n\n";
var_dump($testPriorityQueue->index(2, Types\PriorityQueue::EQUAL));
|