You are here

StreamWrapperTest.php in Zircon Profile 8

File

vendor/guzzlehttp/psr7/tests/StreamWrapperTest.php
View source
<?php

namespace GuzzleHttp\Tests\Psr7;

use GuzzleHttp\Psr7\StreamWrapper;
use GuzzleHttp\Psr7;

/**
 * @covers GuzzleHttp\Psr7\StreamWrapper
 */
class StreamWrapperTest extends \PHPUnit_Framework_TestCase {
  public function testResource() {
    $stream = Psr7\stream_for('foo');
    $handle = StreamWrapper::getResource($stream);
    $this
      ->assertSame('foo', fread($handle, 3));
    $this
      ->assertSame(3, ftell($handle));
    $this
      ->assertSame(3, fwrite($handle, 'bar'));
    $this
      ->assertSame(0, fseek($handle, 0));
    $this
      ->assertSame('foobar', fread($handle, 6));
    $this
      ->assertSame('', fread($handle, 1));
    $this
      ->assertTrue(feof($handle));

    // This fails on HHVM for some reason
    if (!defined('HHVM_VERSION')) {
      $this
        ->assertEquals([
        'dev' => 0,
        'ino' => 0,
        'mode' => 33206,
        'nlink' => 0,
        'uid' => 0,
        'gid' => 0,
        'rdev' => 0,
        'size' => 6,
        'atime' => 0,
        'mtime' => 0,
        'ctime' => 0,
        'blksize' => 0,
        'blocks' => 0,
        0 => 0,
        1 => 0,
        2 => 33206,
        3 => 0,
        4 => 0,
        5 => 0,
        6 => 0,
        7 => 6,
        8 => 0,
        9 => 0,
        10 => 0,
        11 => 0,
        12 => 0,
      ], fstat($handle));
    }
    $this
      ->assertTrue(fclose($handle));
    $this
      ->assertSame('foobar', (string) $stream);
  }

  /**
   * @expectedException \InvalidArgumentException
   */
  public function testValidatesStream() {
    $stream = $this
      ->getMockBuilder('Psr\\Http\\Message\\StreamInterface')
      ->setMethods([
      'isReadable',
      'isWritable',
    ])
      ->getMockForAbstractClass();
    $stream
      ->expects($this
      ->once())
      ->method('isReadable')
      ->will($this
      ->returnValue(false));
    $stream
      ->expects($this
      ->once())
      ->method('isWritable')
      ->will($this
      ->returnValue(false));
    StreamWrapper::getResource($stream);
  }

  /**
   * @expectedException \PHPUnit_Framework_Error_Warning
   */
  public function testReturnsFalseWhenStreamDoesNotExist() {
    fopen('guzzle://foo', 'r');
  }
  public function testCanOpenReadonlyStream() {
    $stream = $this
      ->getMockBuilder('Psr\\Http\\Message\\StreamInterface')
      ->setMethods([
      'isReadable',
      'isWritable',
    ])
      ->getMockForAbstractClass();
    $stream
      ->expects($this
      ->once())
      ->method('isReadable')
      ->will($this
      ->returnValue(false));
    $stream
      ->expects($this
      ->once())
      ->method('isWritable')
      ->will($this
      ->returnValue(true));
    $r = StreamWrapper::getResource($stream);
    $this
      ->assertInternalType('resource', $r);
    fclose($r);
  }

}