public function case_get_vendor_factory() { $self = $this; $this->given($transport = 'foo', $factory = function ($socketUri) use(&$called, $self, $transport) { $called = true; $self->string($socketUri)->isEqualTo($transport . '://bar/baz'); return new LUT(str_replace($transport, 'tcp', $socketUri)); }, SUT::register($transport, $factory))->when(function () use(&$result, $transport) { $result = SUT::getFactory($transport); })->then->object($result)->isInstanceOf('Closure')->object($result('foo://bar/baz'))->isEqualTo(new LUT('tcp://bar/baz'))->boolean($called)->isTrue(); }
/** * Set socket. * * @param string $socketUri Socket URI. * @return \Hoa\Socket * @throws \Hoa\Socket\Exception */ protected function setSocket($socketUri) { if (false === ($pos = strpos($socketUri, '://'))) { $socket = new Socket($socketUri); } else { $transport = substr($socketUri, 0, $pos); $factory = Socket\Transport::getFactory($transport); $socket = $factory($socketUri); if (!$socket instanceof Socket) { throw new Socket\Exception('The transport registered for scheme “%s” is not valid: ' . 'It must return a valid Hoa\\Socket\\Socket instance.', 0, $transport); } } $old = $this->_socket; $this->_socket = $socket; return $old; }