<?php
require_once('../../../Data/Types/Restrictions.php');
require_once('../../../Data/Types/TaggedUnion.php');
require_once('../../../Data/Types/Range.php');
require_once('../../../Data/Types/Stack.php');
require_once('../../../Data/Types/Type.php');
use Falcraft\Data\Types;
use Falcraft\Data\Types\Type;
echo "Falcraft\\Data\\Types\\TaggedUnion.php Test\n";
echo "----------------------------------------\n\n";
echo "Basic Instantiation (Boolean, String) -> ";
$success = true;
$testRestrictions = $testTaggedUnion = null;
try {
$testRestrictions = new Types\Restrictions(
array(Type::BASIC_BOOL, Type::BASIC_STRING,)
);
$testTaggedUnion = new Types\TaggedUnion($testRestrictions);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Setting Tagged Union Values -> \n";
echo " Set Boolean -> ";
try {
$testTaggedUnion->set(true);
if ($testTaggedUnion->get() === true) {
echo "Yes\n";
} else {
echo "No\n";
}
} catch (\Exception $e) {
echo "No\n";
}
echo " Set String -> ";
try {
$testTaggedUnion->set('string');
if ($testTaggedUnion->get() === 'string') {
echo "Yes\n";
} else {
echo "No\n";
}
} catch (\Exception $e) {
echo "No\n";
}
echo " Set Integer -> ";
try {
$testTaggedUnion->set(5);
echo "Yes\n";
} catch (\Exception $e) {
echo "No\n";
}
echo "Typed Object Instantiation -> ";
$success = true;
$testRestrictions = $testTaggedUnion = null;
try {
$testRestrictions = new Types\Restrictions(
array(Type::BASIC_INT, Type::TYPED_OBJECT,),
array('Falcraft\\Data\\Types\\Range')
);
$testTaggedUnion = new Types\TaggedUnion($testRestrictions);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Setting Tagged Union Values -> \n";
echo " Integer -> ";
try {
$testTaggedUnion->set(5);
if ($testTaggedUnion->get() == 5) {
echo "Yes - Type: \n\n";
var_dump($testTaggedUnion->getType());
echo "\n";
} else {
echo "No\n";
}
} catch (\Exception $e) {
echo "No\n";
}
echo " Falcraft\\Data\\Types\\Range -> ";
try {
$testRange = new Types\Range();
$testTaggedUnion->set($testRange);
if ($testTaggedUnion->get() instanceof Types\Range) {
echo "Yes - Type: \n\n";
var_dump($testTaggedUnion->getType());
echo "\n";
} else {
echo "No\n";
}
} catch (\Exception $e) {
echo "No\n";
}
echo " Falcraft\\Data\\Types\\Stack -> ";
try {
$testStack = new Types\Stack();
$testTaggedUnion->set($testStack);
echo "Yes\n";
} catch (\Exception $e) {
echo "No\n";
}
|