| 
<?php
 require_once('src/Phabstractic/Patterns/Registry.php');
 
 use PHPUnit\Framework\TestCase;
 use Phabstractic\Patterns;
 
 class RegistryTest extends TestCase
 {
 public function testInstantiation() {
 $registry = Patterns\Registry::instantiate(array('testkey'=>'testdata'));
 
 $this->assertInstanceOf(Patterns\Registry::class, $registry);
 
 return $registry;
 }
 
 /**
 * @depends testInstantiation
 * @expectedException \Phabstractic\Patterns\Exception\RuntimeException
 *
 */
 public function testDoubleInstantiation() {
 $registry = Patterns\Registry::instantiate(array('errorkey'=>'errorvalue'));
 }
 
 /**
 * @depends testInstantiation
 *
 */
 public function testRetrieval($registry) {
 $test = $registry->get('testkey');
 
 $this->assertEquals($test, 'testdata');
 
 $testref =& $registry->getReference('testkey');
 
 $this->assertEquals($test, 'testdata');
 
 $testref = 'referenceddata';
 
 $this->assertEquals($registry->get('testkey'), 'referenceddata');
 
 $testref = 'testdata';
 
 }
 
 /**
 * @depends testInstantiation
 *
 */
 public function testSetting($registry) {
 $registry->set('newkey', 'newvalue');
 
 $this->assertEquals($registry->get('newkey'), 'newvalue');
 
 $testref = 'referenceddata';
 
 $registry->setReference('testref', $testref);
 
 $testref = 'toucheddata';
 
 $this->assertEquals($registry->get('testref'), 'toucheddata');
 
 }
 
 /**
 * @depends testInstantiation
 *
 */
 public function testArrayFunctionality($registry) {
 $this->assertEquals($registry['testkey'], 'testdata');
 
 $registry['testkey'] = 'modifieddata';
 
 $this->assertEquals($registry['testkey'], 'modifieddata');
 }
 
 /**
 * @depends testInstantiation
 * @expectedException \Phabstractic\Patterns\Exception\RangeException
 *
 */
 public function testArrayRange($registry) {
 $val = $registry['unknownkey'];
 }
 
 /**
 * @expectedException Error
 *
 */
 public function testClone()
 {
 $registry = Patterns\Registry::instantiate();
 $registryclone = clone $registry;
 }
 
 
 public static function tearDownAfterClass()
 {
 $registry = Patterns\Registry::instantiate();
 unset($registry['testkey']);
 unset($registry['newkey']);
 unset($registry['testref']);
 }
 }
 
 |