<?php
require_once('../../../Data/Types/Structure.php');
require_once('../../../Data/Types/Restrictions.php');
require_once('../../../Data/Types/TaggedUnion.php');
require_once('../../../Data/Types/Type.php');
use Falcraft\Data\Types;
use Falcraft\Data\Types\Type;
echo "Falcraft\\Data\\Types\\Structure.php Test\n";
echo "--------------------------------------\n\n";
echo "Basic Instantiation -> ";
$success = true;
$structure = null;
try {
$structure = new Types\Structure();
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n\n";
echo "Structure Internals -- \n\n";
var_dump($structure->getElements());
echo "\n";
} else {
echo "Failure...\n";
}
echo "Set a non-existent element (item => 2) -> ";
$fail = true;
$structure = null;
try {
$structure = new Types\Structure(array(), array('strict' => true));
$structure->setElement('item', 2);
$fail = false;
} catch (\Exception $e) {
}
if ($fail) {
echo "Failure!\n";
} else {
echo "Success...\n";
}
echo "Simple Instantiation -> ";
$success = true;
$structure = null;
try {
$structure = new Types\Structure(
array('field1', 'field2',),
array('strict' => true,)
);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Set field1 ('value') -> ";
$success = true;
try {
$structure->setElement('field1', 'value');
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Tagged Union Instantiation (String, Boolean) -> ";
$success = true;
$structure = null;
try {
$structure = new Types\Structure(
array('field1',
array(new Types\Restrictions(array(Type::BASIC_STRING, Type::BASIC_BOOL,)),
'taggedUnionField',)),
array('strict' => true)
);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n\n";
echo "Structure Internals -- \n\n";
var_dump($structure);
echo "\n";
} else {
echo "Failure...\n";
}
echo "Set TaggedUnion to Improper Type (int) -> ";
$fail = true;
try {
$structure->setElement('taggedUnionField', 2);
$failed = false;
} catch (\Exception $e) {
}
if ($fail) {
echo "Failure!\n";
} else {
echo "Success...\n";
}
echo "Set TaggedUnion to Proper Type (string) -> ";
$success = true;
try {
$structure->setElement('taggedUnionField', 'data');
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success! (" . $structure->getElement('taggedUnionField') . ")\n";
} else {
echo "Failure...\n";
}
|