/** * */ function test_invokable_closure() { $resolver = new Resolver(); $plugin = new Config(); $resolver->configure('foo', function ($bar) { return $bar; }); $resolver->configure('bar', $plugin); $this->assertEquals($plugin, $resolver->invokable('foo')); }
/** * */ function test_gem_factory() { $resolver = new Resolver(); $resolver->configure('bar', function () { return function () { return 'baz'; }; }); $resolver->configure('factory', new Plugin('bar')); $this->assertEquals('baz', $resolver->gem(new Factory('foo'))); }
/** * */ function test_composite_service_container() { $plugin = new Container(['foo' => 'bar']); $resolver = new Resolver(); $resolver->configure('bar', Config::class); $this->assertInstanceOf(Config::class, $resolver->composite($plugin, 'foo')); }
/** * */ function test_resolver_gem_with_plugin_name() { $resolver = new Resolver(); $resolver->configure('foo', Config::class); $plugin = $resolver->gem(new Scope('foo', [])); $this->assertInstanceOf(Config::class, $plugin); }
/** * */ function test_plugin_array_service_name_not_the_same() { $resolver = new Resolver(); $resolver->configure('layout', ['Mvc5\\Layout', 'template' => 'foo']); $layout = $resolver->pluginArray('layout'); $this->assertEquals('foo', $layout->template()); }
/** * */ function test_provide_with_merge() { $resolver = new Resolver(); $resolver->configure('foo', new Plugin(Model::class, ['a' => new Value('a'), 'b' => new Value('b')])); $config = new Plugin('foo', ['a' => new Value('a1')]); $this->assertEquals(new Model('a1', 'b', 'c'), $resolver->gem($config, ['c' => 'c'])); }
/** * */ function test_callback_no_callback_strict_config_exists() { $resolver = new Resolver(); $resolver->setStrict(true); $resolver->configure(Config::class, Config::class); $this->assertTrue($resolver->strict()); $this->assertInstanceOf(Config::class, $resolver->callback(Config::class)); }
/** * */ function test_solve_resolver() { $resolver = new Resolver(); $resolver->configure('event\\model', Event::class); $resolver->events(['service\\resolver' => [function () { return 'bar'; }]]); $this->assertEquals('bar', $resolver->solve('foo')); }
/** * */ function test_resolvable_recursion_exception() { $resolver = new Resolver(); $resolver->configure('event\\model', Event::class); $resolver->events(['service\\resolver' => [function () { throw new \RuntimeException(); }]]); $this->setExpectedException('RuntimeException'); $resolver->resolvable(new Unresolvable()); }
/** * */ function test_build() { $resolver = new Resolver(); $resolver->configure('foo', Config::class); $this->assertInstanceOf(Config::class, $resolver->build(['foo'])); }
/** * */ function test_parent() { $resolver = new Resolver(); $resolver->configure('foo', 'bar'); $this->assertEquals('bar', $resolver->parent('foo')); }
/** * */ function test_merge_param_name() { $resolver = new Resolver(); $resolver->configure('foo', 'bar'); $parent = new Plugin(null); $config = new Plugin(null, [], [], 'foo'); $result = new Plugin(null, [], [], 'foo'); $this->assertEquals($result, $resolver->merge($parent, $config)); }
/** * */ function test_create() { $resolver = new Resolver(); $resolver->configure('foo', Config::class); $this->assertInstanceOf(Config::class, $resolver->create('foo')); }
/** * */ function test_make_with_callback_param() { $resolver = new Resolver(); $resolver->configure('foo', Config::class); $this->assertInstanceOf(Autowire::class, $resolver->make(Autowire::class, [Arg::EVENT => new CallEvent()])); }
/** * */ function test_plugin_with_recursive_service_array_config() { $resolver = new Resolver(); $resolver->configure('stdClass', ['stdClass']); $this->assertEquals(new \stdClass(), $resolver->plugin('stdClass')); }
/** * */ function test_gem_plug() { $resolver = new Resolver(); $resolver->configure('foo', 'bar'); $this->assertEquals('bar', $resolver->gem(new Plug('foo'))); }
/** * $this->resolve($method) */ function test_hydrate_call_function_with_args_and_current_object() { $resolver = new Resolver(); $resolver->configure('foo', 'bar'); $function = new Invoke(function (Hydrate $object, $name) { $object->name($name); return $object; }); $plugin = new Hydrator(null, [['$object', $function, 'name' => new Plug('foo')]]); $object = $resolver->hydrate($plugin, new Hydrate()); $this->assertInstanceOf(Hydrate::class, $object); $this->assertEquals('bar', $object->name()); }
/** * */ function test_child() { $resolver = new Resolver(); $resolver->configure('bar', new Plugin(Config::class)); $this->assertInstanceOf(Config::class, $resolver->child(new Child('foo', 'bar'))); }