Example #1
0
 /**
  *
  */
 function test_shared_set()
 {
     $resolver = new Resolver();
     $this->assertEquals('bar', $resolver->shared('foo', function () {
         return 'bar';
     }));
 }
Example #2
0
 /**
  *
  */
 function test_gem_filter()
 {
     $resolver = new Resolver();
     $this->assertEquals('foo', $resolver->gem(new Filter('foo', [function ($foo) {
         return $foo;
     }])));
 }
Example #3
0
 /**
  *
  */
 function test_call_invoke_not_resolvable()
 {
     $resolver = new Resolver();
     $this->assertEquals('foo', $resolver->call(function () {
         return 'foo';
     }));
 }
Example #4
0
 /**
  *
  */
 function test_unique_callback()
 {
     $resolver = new Resolver();
     $this->assertInstanceOf(Config::class, $resolver->unique('foo', 'bar', [], function () {
         return new Config();
     }));
 }
Example #5
0
 /**
  *
  */
 function test_scope_exists()
 {
     $resolver = new Resolver();
     $config = new Config();
     $resolver->scope($config);
     $this->assertTrue($config === $resolver->scope());
 }
Example #6
0
 /**
  *
  */
 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']));
 }
Example #7
0
 /**
  *
  */
 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);
 }
Example #8
0
 /**
  *
  */
 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());
 }
Example #9
0
 /**
  *
  */
 function test_provider()
 {
     $resolver = new Resolver();
     $provider = function () {
     };
     $resolver->setProvider($provider);
     $this->assertTrue($provider === $resolver->provider());
 }
Example #10
0
 /**
  *
  */
 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));
 }
Example #11
0
 /**
  *
  */
 function test_invoke_with_provider()
 {
     $resolver = new Resolver();
     $resolver->setProvider(function () {
         return 'bar';
     });
     $this->assertEquals('bar', $resolver('foo'));
 }
Example #12
0
 /**
  *
  */
 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']));
 }
Example #13
0
 /**
  *
  */
 function test_gem_copy()
 {
     $resolver = new Resolver();
     $object = new \stdClass();
     $copy = $resolver->gem(new Copy($object));
     $this->assertEquals($object, $copy);
     $this->assertFalse($object === $copy);
 }
Example #14
0
 /**
  *
  */
 function test_event()
 {
     $resolver = new Resolver();
     $resolver->events(['foo' => [function () {
         return 'bar';
     }]]);
     $this->assertEquals('bar', $resolver->event('foo'));
 }
Example #15
0
 /**
  *
  */
 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'));
 }
Example #16
0
 /**
  *
  */
 function test_invoke_with_callback()
 {
     $resolver = new Resolver();
     $result = $resolver->invoke(function ($foo) {
         return $foo;
     }, [], function () {
         return 'bar';
     });
     $this->assertEquals('bar', $result);
 }
Example #17
0
 /**
  *
  */
 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());
 }
Example #18
0
 /**
  *
  */
 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')));
 }
Example #19
0
 /**
  *
  */
 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());
 }
Example #20
0
 /**
  *
  */
 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']));
 }
Example #21
0
 /**
  *
  */
 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));
 }
Example #22
0
 /**
  *
  */
 function test_gem_unresolvable()
 {
     $resolver = new Resolver();
     $this->setExpectedException(RuntimeException::class);
     $resolver->gem(new Unresolvable());
 }
Example #23
0
 /**
  *
  */
 function test_strict()
 {
     $resolver = new Resolver();
     $this->assertEquals(false, $resolver->strict());
 }
Example #24
0
 /**
  *
  */
 function test_gem_config()
 {
     $resolver = new Resolver();
     $resolver->config(['foo' => 'bar']);
     $this->assertEquals(['foo' => 'bar'], $resolver->gem(new Config()));
 }
Example #25
0
 /**
  *
  */
 function test_parent()
 {
     $resolver = new Resolver();
     $resolver->configure('foo', 'bar');
     $this->assertEquals('bar', $resolver->parent('foo'));
 }
Example #26
0
 /**
  *
  */
 function test_make_with_missing_param()
 {
     $resolver = new Resolver();
     $this->setExpectedException('RuntimeException');
     $this->assertInstanceOf(AutowireMissingParam::class, $resolver->make(AutowireMissingParam::class));
 }
Example #27
0
 /**
  *
  */
 function test_first_with_others()
 {
     $resolver = new Resolver();
     $this->assertInstanceOf(Config::class, $resolver->first(Config::class, ['bar']));
 }
Example #28
0
 /**
  *
  */
 function test_gem_args()
 {
     $resolver = new Resolver();
     $this->assertEquals(['foo' => new Config()], $resolver->gem(new Args(['foo' => new Plugin(Config::class)])));
 }
Example #29
0
 /**
  *
  */
 function test_gem_file_include()
 {
     $resolver = new Resolver();
     $plugin = new FileInclude(__DIR__ . '/../Model/config.inc.php');
     $this->assertEquals(['foo' => 'bar'], $resolver->gem($plugin));
 }
Example #30
0
 /**
  *
  */
 function test_create()
 {
     $resolver = new Resolver();
     $resolver->configure('foo', Config::class);
     $this->assertInstanceOf(Config::class, $resolver->create('foo'));
 }