/** * */ function test_shared_set() { $resolver = new Resolver(); $this->assertEquals('bar', $resolver->shared('foo', function () { return 'bar'; })); }
/** * */ function test_gem_filter() { $resolver = new Resolver(); $this->assertEquals('foo', $resolver->gem(new Filter('foo', [function ($foo) { return $foo; }]))); }
/** * */ function test_call_invoke_not_resolvable() { $resolver = new Resolver(); $this->assertEquals('foo', $resolver->call(function () { return 'foo'; })); }
/** * */ function test_unique_callback() { $resolver = new Resolver(); $this->assertInstanceOf(Config::class, $resolver->unique('foo', 'bar', [], function () { return new Config(); })); }
/** * */ function test_scope_exists() { $resolver = new Resolver(); $config = new Config(); $resolver->scope($config); $this->assertTrue($config === $resolver->scope()); }
/** * */ 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_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_provider() { $resolver = new Resolver(); $provider = function () { }; $resolver->setProvider($provider); $this->assertTrue($provider === $resolver->provider()); }
/** * */ 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_invoke_with_provider() { $resolver = new Resolver(); $resolver->setProvider(function () { return 'bar'; }); $this->assertEquals('bar', $resolver('foo')); }
/** * */ function test_arguments() { $resolver = new Resolver(); $this->assertEquals(['child'], $resolver->arguments(['child'], [])); $this->assertEquals(['parent'], $resolver->arguments([], ['parent'])); $this->assertEquals(['child', 'parent'], $resolver->arguments(['child'], ['parent'])); $this->assertEquals(['child' => 'foo', 'parent' => 'baz'], $resolver->arguments(['child' => 'foo'], ['child' => 'bar', 'parent' => 'baz'])); }
/** * */ function test_gem_copy() { $resolver = new Resolver(); $object = new \stdClass(); $copy = $resolver->gem(new Copy($object)); $this->assertEquals($object, $copy); $this->assertFalse($object === $copy); }
/** * */ function test_event() { $resolver = new Resolver(); $resolver->events(['foo' => [function () { return 'bar'; }]]); $this->assertEquals('bar', $resolver->event('foo')); }
/** * */ 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_invoke_with_callback() { $resolver = new Resolver(); $result = $resolver->invoke(function ($foo) { return $foo; }, [], function () { return 'bar'; }); $this->assertEquals('bar', $result); }
/** * */ 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_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_bind() { $resolver = new Resolver(); $config = new Config(); $callback = function () { return $this; }; $scoped = $resolver->bind($callback, $config); $this->assertInstanceOf(\Closure::class, $scoped); $this->assertTrue($config === $scoped()); }
/** * */ function test_gem_invokable_merge() { $resolver = new Resolver(); $invokable = new Invokable(new Call(new Invoke(function ($foo, $bar, $baz) { return $foo . $bar . $baz; })), ['s']); $callable = $resolver->gem($invokable); $this->assertEquals('foobars', $callable('foo', 'bar')); $this->assertEquals('foobars', call_user_func($callable, 'foo', 'bar')); $this->assertEquals('foobars', call_user_func_array($callable, ['foo', 'bar'])); $this->assertEquals('foobars', $resolver->call($callable, ['foo', 'bar'])); }
/** * */ 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_gem_unresolvable() { $resolver = new Resolver(); $this->setExpectedException(RuntimeException::class); $resolver->gem(new Unresolvable()); }
/** * */ function test_strict() { $resolver = new Resolver(); $this->assertEquals(false, $resolver->strict()); }
/** * */ function test_gem_config() { $resolver = new Resolver(); $resolver->config(['foo' => 'bar']); $this->assertEquals(['foo' => 'bar'], $resolver->gem(new Config())); }
/** * */ function test_parent() { $resolver = new Resolver(); $resolver->configure('foo', 'bar'); $this->assertEquals('bar', $resolver->parent('foo')); }
/** * */ function test_make_with_missing_param() { $resolver = new Resolver(); $this->setExpectedException('RuntimeException'); $this->assertInstanceOf(AutowireMissingParam::class, $resolver->make(AutowireMissingParam::class)); }
/** * */ function test_first_with_others() { $resolver = new Resolver(); $this->assertInstanceOf(Config::class, $resolver->first(Config::class, ['bar'])); }
/** * */ function test_gem_args() { $resolver = new Resolver(); $this->assertEquals(['foo' => new Config()], $resolver->gem(new Args(['foo' => new Plugin(Config::class)]))); }
/** * */ function test_gem_file_include() { $resolver = new Resolver(); $plugin = new FileInclude(__DIR__ . '/../Model/config.inc.php'); $this->assertEquals(['foo' => 'bar'], $resolver->gem($plugin)); }
/** * */ function test_create() { $resolver = new Resolver(); $resolver->configure('foo', Config::class); $this->assertInstanceOf(Config::class, $resolver->create('foo')); }