/** * @param Builder $builder * @dataProvider containerBuilderProvider */ public function testScanWithCallable(Builder $builder) { $builder->define(Fixture\OneScalarArgument::class)->using(static function () { return new Fixture\OneScalarArgument('baz'); })->build(); $builder->blacklist(Fixture\InvalidParam::class); $builder->blacklist(Fixture\InvalidDefinition::class); $builder->blacklist(Fixture\OneScalarArgument::class); $builder->blacklist(Fixture\OneArrayArgument::class); $builder->blacklist(Fixture\InjectionPointChild::class); $builder->blacklist(Fixture\InjectionPointParent::class); $builder->addDirectories(array(__DIR__ . '/Fixture/')); $builder->addNamespaces(array('zdi\\Tests\\Fixture\\'), function (DefinitionBuilder $builder) { $builder->factory(); }); $container = $builder->build(); $this->defaultFactoryAssertions($container, Fixture\NoArguments::class); $this->defaultFactoryAssertions($container, Fixture\OneObjectArgument::class); $this->defaultFactoryAssertions($container, Fixture\OneOptionalObjectArgument::class); $this->assertFalse($container->has(Fixture\InvalidParam::class)); $this->assertSame('baz', $container->get(Fixture\OneScalarArgument::class)->getString()); }