/** * */ function test_call_event() { $resolver = new Resolver(); $resolver->events(['foo' => [function () { return 'bar'; }]]); $this->assertEquals('bar', $resolver->call(new 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_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_invokable_with_fallback() { $resolver = new Resolver(); $resolver->events(['foo' => [function () { return 'bar'; }]]); $resolver->services([Arg::EVENT_MODEL => Event::class]); $invokable = $resolver->invokable('foo'); $this->assertInstanceOf(\Closure::class, $invokable); $this->assertEquals('bar', $invokable()); }
/** * */ function test_clone_with_events_object() { $resolver = new Resolver([Arg::EVENTS => new Config()]); $clone = clone $resolver; $this->assertEquals(true, $clone == $resolver); $events = $clone->events(); $events['a'] = 'a'; $this->assertEquals(false, $clone == $resolver); $this->assertEquals(new Config(), $resolver->events()); $this->assertEquals(new Config(['a' => 'a']), $clone->events()); $this->assertEquals(null, $clone->events()['b']); $clone->config()[Arg::EVENTS]['b'] = 'b'; $this->assertEquals('b', $clone->events()['b']); $this->assertTrue($clone->events() === $clone->config()[Arg::EVENTS]); }