| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 | 
							- <?php
 - 
 - require_once 'Swift/Tests/SwiftUnitTestCase.php';
 - require_once 'Swift/DependencyContainer.php';
 - 
 - class One {
 -   public $arg1, $arg2;
 -   public function __construct($arg1 = null, $arg2 = null) {
 -     $this->arg1 = $arg1;
 -     $this->arg2 = $arg2;
 -   }
 - }
 - 
 - class Swift_DependencyContainerTest extends Swift_Tests_SwiftUnitTestCase
 - {
 -   
 -   private $_container;
 -   
 -   public function setUp()
 -   {
 -     $this->_container = new Swift_DependencyContainer();
 -   }
 -   
 -   public function testRegisterAndLookupValue()
 -   {
 -     $this->_container->register('foo')->asValue('bar');
 -     $this->assertIdentical('bar', $this->_container->lookup('foo'));
 -   }
 -   
 -   public function testHasReturnsTrueForRegisteredValue()
 -   {
 -     $this->_container->register('foo')->asValue('bar');
 -     $this->assertTrue($this->_container->has('foo'));
 -   }
 -   
 -   public function testHasReturnsFalseForUnregisteredValue()
 -   {
 -     $this->assertFalse($this->_container->has('foo'));
 -   }
 -   
 -   public function testRegisterAndLookupNewInstance()
 -   {
 -     $this->_container->register('one')->asNewInstanceOf('One');
 -     $this->assertIsA($this->_container->lookup('one'), 'One');
 -   }
 -   
 -   public function testHasReturnsTrueForRegisteredInstance()
 -   {
 -     $this->_container->register('one')->asNewInstanceOf('One');
 -     $this->assertTrue($this->_container->has('one'));
 -   }
 -   
 -   public function testNewInstanceIsAlwaysNew()
 -   {
 -     $this->_container->register('one')->asNewInstanceOf('One');
 -     $a = $this->_container->lookup('one');
 -     $b = $this->_container->lookup('one');
 -     $this->assertClone($a, $b);
 -   }
 -   
 -   public function testRegisterAndLookupSharedInstance()
 -   {
 -     $this->_container->register('one')->asSharedInstanceOf('One');
 -     $this->assertIsA($this->_container->lookup('one'), 'One');
 -   }
 -   
 -   public function testHasReturnsTrueForSharedInstance()
 -   {
 -     $this->_container->register('one')->asSharedInstanceOf('One');
 -     $this->assertTrue($this->_container->has('one'));
 -   }
 -   
 -   public function testMultipleSharedInstancesAreSameInstance()
 -   {
 -     $this->_container->register('one')->asSharedInstanceOf('One');
 -     $a = $this->_container->lookup('one');
 -     $b = $this->_container->lookup('one');
 -     $this->assertSame($a, $b);
 -   }
 -   
 -   public function testNewInstanceWithDependencies()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('one')->asNewInstanceOf('One')
 -       ->withDependencies(array('foo'));
 -     $obj = $this->_container->lookup('one');
 -     $this->assertIdentical('FOO', $obj->arg1);
 -   }
 -   
 -   public function testNewInstanceWithMultipleDependencies()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('bar')->asValue(42);
 -     $this->_container->register('one')->asNewInstanceOf('One')
 -       ->withDependencies(array('foo', 'bar'));
 -     $obj = $this->_container->lookup('one');
 -     $this->assertIdentical('FOO', $obj->arg1);
 -     $this->assertIdentical(42, $obj->arg2);
 -   }
 -   
 -   public function testNewInstanceWithInjectedObjects()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('one')->asNewInstanceOf('One');
 -     $this->_container->register('two')->asNewInstanceOf('One')
 -       ->withDependencies(array('one', 'foo'));
 -     $obj = $this->_container->lookup('two');
 -     $this->assertClone($this->_container->lookup('one'), $obj->arg1);
 -     $this->assertIdentical('FOO', $obj->arg2);
 -   }
 -   
 -   public function testNewInstanceWithAddConstructorValue()
 -   {
 -     $this->_container->register('one')->asNewInstanceOf('One')
 -       ->addConstructorValue('x')
 -       ->addConstructorValue(99);
 -     $obj = $this->_container->lookup('one');
 -     $this->assertIdentical('x', $obj->arg1);
 -     $this->assertIdentical(99, $obj->arg2);
 -   }
 -   
 -   public function testNewInstanceWithAddConstructorLookup()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('bar')->asValue(42);
 -     $this->_container->register('one')->asNewInstanceOf('One')
 -       ->addConstructorLookup('foo')
 -       ->addConstructorLookup('bar');
 -     
 -     $obj = $this->_container->lookup('one');
 -     $this->assertIdentical('FOO', $obj->arg1);
 -     $this->assertIdentical(42, $obj->arg2);
 -   }
 -   
 -   public function testResolvedDependenciesCanBeLookedUp()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('one')->asNewInstanceOf('One');
 -     $this->_container->register('two')->asNewInstanceOf('One')
 -       ->withDependencies(array('one', 'foo'));
 -     $deps = $this->_container->createDependenciesFor('two');
 -     $this->assertEqual(
 -       array($this->_container->lookup('one'), 'FOO'), $deps
 -       );
 -   }
 -   
 -   public function testArrayOfDependenciesCanBeSpecified()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('one')->asNewInstanceOf('One');
 -     $this->_container->register('two')->asNewInstanceOf('One')
 -       ->withDependencies(array(array('one', 'foo'), 'foo'));
 -     
 -     $obj = $this->_container->lookup('two');
 -     $this->assertEqual(array($this->_container->lookup('one'), 'FOO'), $obj->arg1);
 -     $this->assertIdentical('FOO', $obj->arg2);
 -   }
 -   
 -   public function testAliasCanBeSet()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('bar')->asAliasOf('foo');
 -     
 -     $this->assertIdentical('FOO', $this->_container->lookup('bar'));
 -   }
 -   
 -   public function testAliasOfAliasCanBeSet()
 -   {
 -     $this->_container->register('foo')->asValue('FOO');
 -     $this->_container->register('bar')->asAliasOf('foo');
 -     $this->_container->register('zip')->asAliasOf('bar');
 -     $this->_container->register('button')->asAliasOf('zip');
 -     
 -     $this->assertIdentical('FOO', $this->_container->lookup('button'));
 -   }
 -   
 - }
 
 
  |