<?php 
 
require_once('../../Loader/Module.php'); 
 
use Falcraft\Loader; 
use Falcraft\Components\File; 
 
echo "Falcraft\\Data\\Loader\\Module.php Test\n"; 
echo "--------------------------------------\n\n"; 
 
echo "Basic Instantiation -- \n"; 
 
echo "    Instantiation (path1, firstModule) -> "; 
 
$success = true; 
 
$top = $path1 = null; 
 
try { 
    $path1 = 'first/module/path'; 
    $top = new Loader\Module($path1, 'firstModule'); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
echo "Additional Instantiation -- \n"; 
 
$success = true; 
 
$child1 = $child2 = $child3 = null; 
 
$path2 = $path3 = $path4 = null; 
 
try { 
    echo "    Instantiate Paths (2, 3, 4) -> "; 
    $path2 = 'second/module/path'; 
    $path3 = 'third/module/path'; 
    $path4 = 'fourth/module/path'; 
    echo "Success!\n"; 
     
    echo "    Instantiation (path2, subModule1) -> "; 
    $child1 = new Loader\Module($path2, 'subModule1'); 
    echo "Success!\n"; 
     
    echo "    Instantiation (path3, subModule2) -> "; 
    $child2 = new Loader\Module($path3, 'subModule2'); 
    echo "Success!\n"; 
     
    echo "    Instantiation (path4, subModule3) -> "; 
    $child3 = new Loader\Module($path4, 'subModule3'); 
    echo "Success!\n"; 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if (!$success) { 
    echo "EXCEPTION RAISED\n\n"; 
} 
 
echo "\nBasic Operations -- \n"; 
 
echo "    Add subModule1 to firstModule -> "; 
 
$success = true; 
 
try { 
    $top->addModule($child1, $child1->getIdentifier()); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
$paths = Loader\Module::getModuleIdentityPaths($top); 
 
echo "Identity Paths: \n"; 
foreach ($paths as $path) { 
    echo "    $path\n"; 
} 
 
echo "\n    Add subModule3 to subModule1 -> "; 
 
$success = true; 
 
try { 
    $child1->addModule($child3, $child3->getIdentifier()); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
$paths = Loader\Module::getModuleIdentityPaths($top); 
 
echo "Identity Paths: \n"; 
foreach ($paths as $path) { 
    echo "    $path\n"; 
} 
 
echo "\n    Add subModule2 to firstModule -> "; 
 
$success = true; 
 
try { 
    $top->addModule($child2, $child2->getIdentifier()); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
$paths = Loader\Module::getModuleIdentityPaths($top); 
 
echo "Identity Paths: \n"; 
foreach ($paths as $path) { 
    echo "    $path\n"; 
} 
 
echo "    Retrieve As Array (root firstModule) -> "; 
 
$success = true; 
 
$folders = null; 
 
try { 
    $folders = Loader\Module::getAsArray($top); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
var_dump($folders); 
 
echo "\n    Retrieve Using Data (path2) -> "; 
 
$success = true; 
 
$ret = null; 
 
try { 
    $ret = Loader\Module::pathBelongsTo($path2, $top); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success! Identifier: $ret\n"; 
} else { 
    echo "Failure...\n"; 
} 
 
echo "    Retrieve Using Data (path3) -> "; 
 
$success = true; 
 
$ret = null; 
 
try { 
    $ret = Loader\Module::pathBelongsTo($path3, $top); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success! Identifier: $ret\n"; 
} else { 
    echo "Failure...\n"; 
} 
 
echo "    Get From Path (firstModule/subModule2) -> "; 
 
$success = true; 
 
unset($ret); 
$ret = null; 
 
try { 
    $ret = Loader\Module::getFromModuleIdentityPath($top, 'firstModule/subModule2'); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success! Identifier: {$ret->getIdentifier()}\n"; 
} else { 
    echo "Failure...\n"; 
} 
 
unset($ret); 
 
echo "    Add To Module Identity Path (path5, subModule4) -- \n"; 
 
$success = true; 
 
$granchild2 = null; 
 
try { 
    echo "        Instantiate subModule4 -> "; 
    $grandchild2 = new Loader\Module('path/to/last/module', 'subModule4'); 
    echo "Success!\n"; 
     
    echo "        Add to Path (firstModule/subModule2) -> "; 
    Loader\Module::addToModuleIdentityPath( 
        $top, 
        'firstModule/subModule2', 
        $grandchild2, 
        $grandchild2->getIdentifier() 
    ); 
} catch (\Exception $e) { 
    $success = false; 
} 
 
if ($success) { 
    echo "Success!\n\n"; 
} else { 
    echo "Failure...\n\n"; 
} 
 
$paths = Loader\Module::getModuleIdentityPaths($top); 
 
echo "Identity Paths: \n"; 
foreach ($paths as $path) { 
    echo "    $path\n"; 
} 
 
echo "\n"; 
 
 |