/** * Тест общего цикла работы с искрой. */ public function testCreateAndOptions() { /* Создаём заглушки объектов */ $context = $this->getMock('IO_Stream_Spark_Context_Interface'); $opts = $this->getMock('Options_Interface'); /* Один раз будет вызвано создание объекта опций */ $context->expects($this->once())->method('createOptions')->will($this->returnValue($opts)); /* Два раза будут установлены опции */ $opts->expects($this->exactly(2))->method('apply'); $callback = array($this, 'getCallback'); /* Четыре раза искра будет обращаться за параметрами */ $opts->expects($this->exactly(4))->method('get')->will($this->returnCallback($callback)); /* Создаём искры */ $spark = IO_Stream_Spark_Socket::create($context); $this->assertType('IO_Stream_Spark_Socket', $spark); /* Устанавливаем опции и проверяем fluent interface */ $this->assertEquals($spark, $spark->setOptions($this->_opts)); /* Зажигаем! :) */ $this->assertTrue($spark->ignite()); $this->assertType('resource', $spark->getStream()); /* Проверяем получение информации о соединении */ $name = $spark->getName(); $this->assertType('string', $name); $name = $spark->getName(true); $this->assertType('string', $name); $this->assertStringEndsWith(':' . $this->_opts['port'], $name); $info = $spark->getInfo(); $this->assertType('array', $info); }
/** * Создание новой искры сокета. * * @var IO_Stream_Spark_Interface */ public function createSocketSpark() { return IO_Stream_Spark_Socket::create($this); }