public function testCaseSupervisor_HandlesException_UsingFirstValidHandler()
{
$ex = new RejectionException();
$params = ['param' => 'value'];
$result = null;
$unexpected = new UnexpectedSolver();
$expected = new ExpectedSolver();
$factory = new SolverFactory();
$factory->define('Unexpected', function () use($unexpected) {
return $unexpected;
})->define('Expected', function () use($expected) {
return $expected;
});
$super = $this->createSupervisor($factory, [], [WriteException::class => 'Unexpected', RuntimeException::class => 'Expected', Exception::class => 'Unexpected']);
$super->solve($ex, $params)->then(function ($value) use(&$result) {
$result = $value;
});
$this->assertSame($expected, $result);
}