Ejemplo n.º 1
0
 public function testGetMethodParameters()
 {
     $definition = new ClassDefinition('Foo');
     $definition->addMethodParameter("setVar", "var", array('type' => null, 'required' => true, 'default' => 'test'));
     $this->assertNull($definition->getMethodParameters("Bar", "setVar"));
     $this->assertEquals(array('Foo::setVar:var' => array("var", null, true, 'test')), $definition->getMethodParameters("Foo", "setVar"));
 }
Ejemplo n.º 2
0
 public function testClassDefinitionHasMethods()
 {
     $definition = new ClassDefinition('Foo');
     $this->assertFalse($definition->hasMethods('Foo'));
     $definition->addMethod('doBar');
     $this->assertTrue($definition->hasMethods('Foo'));
 }
Ejemplo n.º 3
0
 public function testHasMethodAvoidAskingFromDefinitionsWhichDoNotIncludeClass()
 {
     $builderDefinition = new BuilderDefinition();
     $definitionClass = new ClassDefinition('foo');
     $definitionClass->addMethod('doFoo');
     $definitionList = new DefinitionList(array($builderDefinition, $definitionClass));
     $this->assertTrue($definitionList->hasMethod('foo', 'doFoo'));
 }
Ejemplo n.º 4
0
 public function testGetClassSupertypes()
 {
     $definitionClassA = new ClassDefinition("A");
     $superTypesA = array("superA");
     $definitionClassA->setSupertypes($superTypesA);
     $definitionClassB = new ClassDefinition("B");
     $definitionClassB->setSupertypes(array("superB"));
     $definitionList = new DefinitionList(array($definitionClassA, $definitionClassB));
     $this->assertEquals($superTypesA, $definitionList->getClassSupertypes("A"));
 }
Ejemplo n.º 5
0
 public function testHasMethod()
 {
     $definitionClass = new ClassDefinition('foo');
     $definitionClass->addMethod('doFoo');
     $definitionList = new DefinitionList(array($definitionClass));
     $this->assertTrue($definitionList->hasMethod('foo', 'doFoo'));
     $this->assertFalse($definitionList->hasMethod('foo', 'doBar'));
     $definitionClass->addMethod('doBar');
     $this->assertTrue($definitionList->hasMethod('foo', 'doBar'));
 }
Ejemplo n.º 6
0
 /**
  * @group ZF2-142
  */
 public function testDiWillInjectDefaultParameters()
 {
     $di = new Di();
     $classDef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\ConstructorInjection\\OptionalParameters');
     $classDef->addMethod('__construct', true);
     $classDef->addMethodParameter('__construct', 'a', array('type' => false, 'required' => false, 'default' => null));
     $classDef->addMethodParameter('__construct', 'b', array('type' => false, 'required' => false, 'default' => 'defaultConstruct'));
     $classDef->addMethodParameter('__construct', 'c', array('type' => false, 'required' => false, 'default' => array()));
     $di->definitions()->addDefinition($classDef, false);
     $optionalParams = $di->newInstance('ZendTest\\Di\\TestAsset\\ConstructorInjection\\OptionalParameters');
     $this->assertSame(null, $optionalParams->a);
     $this->assertSame('defaultConstruct', $optionalParams->b);
     $this->assertSame(array(), $optionalParams->c);
 }
Ejemplo n.º 7
0
 public function testAddMethodSetsCorrectConstructorType()
 {
     $definition = new ClassDefinition('Foo');
     $definition->addMethod('__construct');
     $this->assertEquals(array('__construct' => Di::METHOD_IS_CONSTRUCTOR), $definition->getMethods('Foo'));
 }
Ejemplo n.º 8
0
 /**
  * @group SetterInjection
  * @group SupertypeResolution
  */
 public function testInjectionForSetterInjectionWillConsultSupertypeDefinitionInClassDefinition()
 {
     $di = new Di();
     // for setter injection, the dependency is not required, thus it must be forced
     $classDef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\SetterInjection\\B');
     $classDef->addMethod('setA', true);
     $di->definitions()->addDefinition($classDef, false);
     // top of stack b/c Runtime is already there
     $c = $di->get('ZendTest\\Di\\TestAsset\\SetterInjection\\C');
     $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\SetterInjection\\C', $c);
     $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\SetterInjection\\A', $c->a);
 }
Ejemplo n.º 9
0
 /**
  * @group ZF2-260
  */
 public function testDiWillInjectClassNameAsStringAtCallTime()
 {
     $di = new Di();
     $classDef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\SetterInjection\\D');
     $classDef->addMethod('setA', true);
     $classDef->addMethodParameter('setA', 'a', array('type' => false, 'required' => true));
     $di->definitions()->addDefinition($classDef, false);
     $d = $di->get('ZendTest\\Di\\TestAsset\\SetterInjection\\D', array('a' => 'ZendTest\\Di\\TestAsset\\SetterInjection\\A'));
     $this->assertSame($d->a, 'ZendTest\\Di\\TestAsset\\SetterInjection\\A');
 }
Ejemplo n.º 10
0
    public function testDiWillInjectDependenciesForAlias()
    {
        $di = new Di;

        // for setter injection, the dependency is not required, thus it must be forced
        $classDef = new Definition\ClassDefinition('ZendTest\Di\TestAsset\SetterInjection\B');
        $classDef->addMethod('setA', false);
        $classDef->addMethodParameter('setA', 'a', array('type' => 'ZendTest\Di\TestAsset\SetterInjection\A', 'required' => false));
        $di->definitions()->addDefinition($classDef, false);
        $di->instanceManager()->addAlias('b_alias', 'ZendTest\Di\TestAsset\SetterInjection\B');
        $di->instanceManager()->setInjections('b_alias', array('ZendTest\Di\TestAsset\SetterInjection\A'));

        $b = $di->get('b_alias');
        $this->assertInstanceOf('ZendTest\Di\TestAsset\SetterInjection\A', $b->a);
    }
Ejemplo n.º 11
0
 public function testInjectionCanHandleMultipleInjectionsWithMultipleArguments()
 {
     $definitionList = new DefinitionList(array($classdef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\InjectionClasses\\A'), new Definition\RuntimeDefinition()));
     $classdef->addMethod('injectSplitDependency');
     $classdef->addMethodParameter('injectSplitDependency', 'b', array('required' => true, 'type' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\B'));
     $classdef->addMethodParameter('injectSplitDependency', 'somestring', array('required' => true, 'type' => null));
     /**
      * First test that this works with a single call
      */
     $di = new Di($definitionList);
     $di->instanceManager()->setInjections('ZendTest\\Di\\TestAsset\\InjectionClasses\\A', array('injectSplitDependency' => array('b' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\B', 'somestring' => 'bs-id')));
     $a = $di->newInstance('ZendTest\\Di\\TestAsset\\InjectionClasses\\A');
     $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\InjectionClasses\\B', $a->bs[0]);
     $this->assertEquals('bs-id', $a->bs[0]->id);
     /**
      * Next test that this works with multiple calls
      */
     $di = new Di($definitionList);
     $di->instanceManager()->setInjections('ZendTest\\Di\\TestAsset\\InjectionClasses\\A', array('injectSplitDependency' => array(array('b' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\B', 'somestring' => 'bs-id'), array('b' => 'ZendTest\\Di\\TestAsset\\InjectionClasses\\C', 'somestring' => 'bs-id-for-c'))));
     $a = $di->newInstance('ZendTest\\Di\\TestAsset\\InjectionClasses\\A');
     $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\InjectionClasses\\B', $a->bs[0]);
     $this->assertEquals('bs-id', $a->bs[0]->id);
     $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\InjectionClasses\\C', $a->bs[1]);
     $this->assertEquals('bs-id-for-c', $a->bs[1]->id);
 }
Ejemplo n.º 12
0
 public function testDiWillInjectDependenciesForInstance()
 {
     $di = new Di();
     // for setter injection, the dependency is not required, thus it must be forced
     $classDef = new Definition\ClassDefinition('ZendTest\\Di\\TestAsset\\SetterInjection\\B');
     $classDef->addMethod('setA', true);
     $di->definitions()->addDefinition($classDef, false);
     // top of stack b/c Runtime is already there
     $b = new TestAsset\SetterInjection\B();
     $di->injectDependencies($b);
     $this->assertInstanceOf('ZendTest\\Di\\TestAsset\\SetterInjection\\A', $b->a);
 }