/**
  * @dataProvider providerAddDependencyThrowsExceptionWhenInvalidForProvided
  * @expectedException zibo\ZiboException
  */
 public function testAddDependencyThrowsExceptionWhenInvalidForProvided($for)
 {
     $container = new DependencyContainer();
     $container->addDependency($for, new Dependency('className'));
 }
 public function testGetAll()
 {
     $interface = 'zibo\\core\\di\\TestInterface';
     $token1 = 'test1';
     $token2 = 'test2';
     $id = 'id';
     $construct1 = new DependencyCall('__construct');
     $construct1->addArgument(new DependencyCallArgument('value', $token1));
     $construct2 = new DependencyCall('__construct');
     $construct2->addArgument(new DependencyCallArgument('value', $token2));
     $dependency1 = new Dependency('zibo\\core\\di\\TestObject', $id);
     $dependency1->addCall($construct1);
     $dependency2 = new Dependency('zibo\\core\\di\\TestObject');
     $dependency2->addCall($construct2);
     $container = new DependencyContainer();
     $container->addDependency($interface, $dependency1);
     $container->addDependency($interface, $dependency2);
     $this->di->setContainer($container);
     $expected = array($id => new TestObject($token1), 0 => new TestObject($token2));
     $result = $this->di->getAll($interface);
     $this->assertEquals($expected, $result);
 }
 /**
  * Reads the dependencies from the provided file and adds them to the
  * provided container
  * @param zibo\core\di\DependencyContainer $container
  * @param zibo\library\filesystem\File $file
  * @return null
  */
 private function readDependencies(DependencyContainer $container, File $file)
 {
     $dom = new Document();
     $dom->load($file);
     $dependencyElements = $dom->getElementsByTagName(self::TAG_DEPENDENCY);
     foreach ($dependencyElements as $dependencyElement) {
         $interface = $dependencyElement->getAttribute(self::ATTRIBUTE_INTERFACE);
         $className = $dependencyElement->getAttribute(self::ATTRIBUTE_CLASS);
         $id = $dependencyElement->getAttribute(self::ATTRIBUTE_ID);
         if (!$id) {
             $id = null;
         }
         $dependency = new Dependency($className, $id);
         $this->readCalls($dependency, $dependencyElement);
         $container->addDependency($interface, $dependency);
     }
 }