<?php
require_once('SingletonTrait.php');
use Falcraft\Patterns;
class TestSingleton {
use Patterns\SingletonTrait;
public $publicprop;
private $privateprop;
public static $staticProp = null;
public function init($testarg1, $testarg2)
{
$this->publicProp = $testarg1;
$this->privateProp = $testarg2;
self::$staticProp = 5;
}
public function getPrivateProp()
{
return $this->privateProp;
}
public function setStaticProp($staticarg)
{
self::$staticprop = $staticarg;
}
}
echo "Falcraft\\Patterns\\SingletonTrait.php Test\n";
echo "------------------------------------------\n\n";
echo "Instantiating Singleton with Arguments -> ";
$success = true;
$testSingletonInstance = null;
try {
$testSingletonInstance = TestSingleton::instantiate(1, 2);
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Check Hardened Through Static Call -> ";
$success = true;
$hardened = false;
try {
$hardened = TestSingleton::hardened();
} catch (\Exception $e) {
$success = false;
}
if ($hardened == false) {
$success = false;
}
if ($success) {
echo "Success: " . ( $hardened ? "Hardened\n" : "Not Hardened\n" );
} else {
echo "Failure...: " . ( $hardened ? "Hardened\n" : "Not Hardened\n" );
}
echo "Check Hardened Through Member Function -> ";
$success = true;
try {
$hardened = $testSingletonInstance->hardened();
} catch (\Exception $e) {
$success = false;
}
if ($hardened == false) {
$success = false;
}
if ($success) {
echo "Success: " . ( $hardened ? "Hardened\n" : "Not Hardened\n" );
} else {
echo "Failure...: " . ( $hardened ? "Hardened\n" : "Not Hardened\n" );
}
echo "Instantiate Again Into Alternate Local Variable -> ";
$success = true;
$testSingletonInstanceTwo = null;
try {
$testSingletonInstanceTwo = TestSingleton::instantiate();
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "Instantiate Into Another Local Variable with Arguments -> ";
$success = false;
try {
$testSingletonHardenedTest = TestSingleton::instantiate(4, 5);
} catch (\Exception $e) {
$success = true;
}
if ($success) {
echo "Success: Exception Raised\n";
} else {
echo "Failure...: No Exception Raised\n";
}
echo "Accessing Private Attribute With Member Function -> ";
$success = true;
$privateProp = null;
$privateProp2 = null;
try {
$privateProp = $testSingletonInstance->getPrivateProp();
$privateProp2 = $testSingletonInstanceTwo->getPrivateProp();
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success: $privateProp, $privateProp2\n";
} else {
echo "Failure...\n";
}
echo "Accessing Public Attribute Without Member Function -> ";
$success = true;
$publicProp = null;
$publicProp2 = null;
try {
$publicProp = $testSingletonInstance->publicProp;
$publicProp2 = $testSingletonInstanceTwo->publicProp;
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success: $publicProp, $publicProp2\n";
} else {
echo "Failure...\n";
}
echo "Setting And Accessing Public Static Singleton Attribute -> ";
$success = true;
$staticProp = null;
try {
TestSingleton::$staticProp = 9;
if (TestSingleton::$staticProp == 9) {
$success = true;
} else {
$success = false;
}
} catch (\Exception $e) {
$success = false;
}
if ($success) {
echo "Success!\n";
} else {
echo "Failure...\n";
}
echo "\n";
|