Beispiel #1
0
 public function testInitWebSocketServer()
 {
     $this->given($mockWebSocketServer = $this->generateMockWebSocketServer())->given($this->getMockGenerator()->orphanize('__construct'))->given($this->calling($mockWebSocketServer)->on = $mockWebSocketServer)->given($this->calling($mockWebSocketServer)->getConnection = $mockConnection = new \mock\Hoa\Socket\Connection())->given($this->getMockGenerator()->orphanize('__construct'))->given($this->calling($mockConnection)->getSocket = $mockSocket = new \mock\Hoa\Socket())->given($this->calling($mockSocket)->getAddress = $address = uniqid())->given($this->calling($mockSocket)->getPort = $port = uniqid())->given($runner = new mockTestedClass($mockWebSocketServer, $logger = new mockLogger()))->given($runner->addModule($module1 = new testModule1()))->given($runner->addModule($module2 = new testModule2()))->assert('Without node class')->object($runner->initWebSocketServer())->isIdenticalTo($mockWebSocketServer)->mock($logger)->call('log')->exactly(13)->withIdenticalArguments('<fg=yellow>Starting server...</fg=yellow>')->once()->withIdenticalArguments('Environment: <fg=green>%s</fg=green>')->once()->withIdenticalArguments('Class used:')->once()->withIdenticalArguments('  Logger           : %s', get_class($logger))->once()->withIdenticalArguments('  Runner           : %s', get_class($runner))->once()->withIdenticalArguments('  WebSocket Server : %s', get_class($mockWebSocketServer))->once()->withIdenticalArguments('  Socket Server    : %s', get_class($mockSocket))->once()->withIdenticalArguments('  Node             : %s', 'Hoa\\Socket\\Node')->once()->withIdenticalArguments('<fg=yellow>Listening on %s:%d</fg=yellow>', $address, $port)->once()->withIdenticalArguments('Listening <fg=green>%s</fg=green> event <fg=yellow>%s</fg=yellow>::<fg=blue>%s</fg=blue>', 'event1', 'Atipik\\Hoa\\WebSocketBundle\\Tests\\Units\\WebSocket\\testModule1', 'onEvent1')->once()->withIdenticalArguments('Listening <fg=green>%s</fg=green> event <fg=yellow>%s</fg=yellow>::<fg=blue>%s</fg=blue>', 'event2', 'Atipik\\Hoa\\WebSocketBundle\\Tests\\Units\\WebSocket\\testModule1', 'onEvent2')->once()->withIdenticalArguments('Listening <fg=green>%s</fg=green> event <fg=yellow>%s</fg=yellow>::<fg=blue>%s</fg=blue>', 'event3', 'Atipik\\Hoa\\WebSocketBundle\\Tests\\Units\\WebSocket\\testModule1', 'onEvent3')->once()->withIdenticalArguments('Listening <fg=green>%s</fg=green> event <fg=yellow>%s</fg=yellow>::<fg=blue>%s</fg=blue>', 'event2', 'Atipik\\Hoa\\WebSocketBundle\\Tests\\Units\\WebSocket\\testModule2', 'onEvent2')->once()->mock($mockWebSocketServer)->call('on')->exactly(6)->withArguments('open', xcallable($runner, 'onOpen'))->once()->withArguments('message', xcallable($runner, 'onMessage'))->once()->withArguments('binary-message', xcallable($runner, 'onBinaryMessage'))->once()->withArguments('ping', xcallable($runner, 'onPing'))->once()->withArguments('error', xcallable($runner, 'onError'))->once()->withArguments('close', xcallable($runner, 'onClose'))->once()->mock($mockConnection)->call('setNodeName')->never()->assert('With node class')->given($runner->setNodeClass($class = uniqid()))->object($runner->initWebSocketServer())->isIdenticalTo($mockWebSocketServer)->mock($mockConnection)->call('setNodeName')->once()->withIdenticalArguments($class);
 }