/** * Создание нового объекта буфера ввода/вывода. * * @var IO_Buffer_Interface */ public function createBuffer() { return IO_Buffer::create($this); }
/** * Тест для проверки неправильной работы копирования-при-записи. */ public function testCopyOnWriteFail() { /* Создаём заглушки */ $context = $this->getMock('IO_Buffer_Context_Interface'); $opts = $this->getMock('Options_Interface'); $copy_buf = $this->getMock('IO_Buffer_Interface'); /* Запрос у контекста нового объекта настроек */ $context->expects($this->once())->method('createOptions')->will($this->returnValue($opts)); /* Дважды устанавливаем параметры */ $opts->expects($this->once())->method('apply'); $opts->expects($this->once())->method('get')->with($this->equalTo('copy_on_write'))->will($this->returnValue($copy_buf)); $callback = array($this, 'writeCallbackFail'); /* Один раз произойдёт запись в буфер копирования */ $copy_buf->expects($this->once())->method('write')->with($this->equalTo($this->_data))->will($this->returnCallback($callback)); /* Создаём новый объект буфера */ $buf = IO_Buffer::create($context); $this->assertType('IO_Buffer', $buf); $this->setExpectedException('IO_Buffer_Exception'); /* Записываем в него данные */ $bytes_written = $buf->write($this->_data); }