You are here

class vfsStreamWrapperQuotaTestCase in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperQuotaTestCase.php \org\bovigo\vfs\vfsStreamWrapperQuotaTestCase

Test for quota related functionality of org\bovigo\vfs\vfsStreamWrapper.

@group issue_35

Hierarchy

Expanded class hierarchy of vfsStreamWrapperQuotaTestCase

File

vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/vfsStreamWrapperQuotaTestCase.php, line 16

Namespace

org\bovigo\vfs
View source
class vfsStreamWrapperQuotaTestCase extends \PHPUnit_Framework_TestCase {

  /**
   * access to root
   *
   * @type  vfsStreamDirectory
   */
  private $root;

  /**
   * set up test environment
   */
  public function setUp() {
    $this->root = vfsStream::setup();
    vfsStream::setQuota(10);
  }

  /**
   * @test
   */
  public function writeLessThanQuotaWritesEverything() {
    $this
      ->assertEquals(9, file_put_contents(vfsStream::url('root/file.txt'), '123456789'));
    $this
      ->assertEquals('123456789', $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   */
  public function writeUpToQotaWritesEverything() {
    $this
      ->assertEquals(10, file_put_contents(vfsStream::url('root/file.txt'), '1234567890'));
    $this
      ->assertEquals('1234567890', $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   */
  public function writeMoreThanQotaWritesOnlyUpToQuota() {
    try {
      file_put_contents(vfsStream::url('root/file.txt'), '12345678901');
    } catch (\PHPUnit_Framework_Error $e) {
      $this
        ->assertEquals('file_put_contents(): Only 10 of 11 bytes written, possibly out of free disk space', $e
        ->getMessage());
    }
    $this
      ->assertEquals('1234567890', $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   */
  public function considersAllFilesForQuota() {
    vfsStream::newFile('foo.txt')
      ->withContent('foo')
      ->at(vfsStream::newDirectory('bar')
      ->at($this->root));
    try {
      file_put_contents(vfsStream::url('root/file.txt'), '12345678901');
    } catch (\PHPUnit_Framework_Error $e) {
      $this
        ->assertEquals('file_put_contents(): Only 7 of 11 bytes written, possibly out of free disk space', $e
        ->getMessage());
    }
    $this
      ->assertEquals('1234567', $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   * @group  issue_33
   */
  public function truncateToLessThanQuotaWritesEverything() {
    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
      $this
        ->markTestSkipped('Requires PHP 5.4');
    }
    if (strstr(PHP_VERSION, 'hiphop') !== false) {
      $this
        ->markTestSkipped('Not supported on hhvm');
    }
    $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
    $this
      ->assertTrue(ftruncate($fp, 9));
    fclose($fp);
    $this
      ->assertEquals(9, $this->root
      ->getChild('file.txt')
      ->size());
    $this
      ->assertEquals("\0\0\0\0\0\0\0\0\0", $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   * @group  issue_33
   */
  public function truncateUpToQotaWritesEverything() {
    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
      $this
        ->markTestSkipped('Requires PHP 5.4');
    }
    if (strstr(PHP_VERSION, 'hiphop') !== false) {
      $this
        ->markTestSkipped('Not supported on hhvm');
    }
    $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
    $this
      ->assertTrue(ftruncate($fp, 10));
    fclose($fp);
    $this
      ->assertEquals(10, $this->root
      ->getChild('file.txt')
      ->size());
    $this
      ->assertEquals("\0\0\0\0\0\0\0\0\0\0", $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   * @group  issue_33
   */
  public function truncateToMoreThanQotaWritesOnlyUpToQuota() {
    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
      $this
        ->markTestSkipped('Requires PHP 5.4');
    }
    if (strstr(PHP_VERSION, 'hiphop') !== false) {
      $this
        ->markTestSkipped('Not supported on hhvm');
    }
    $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
    $this
      ->assertTrue(ftruncate($fp, 11));
    fclose($fp);
    $this
      ->assertEquals(10, $this->root
      ->getChild('file.txt')
      ->size());
    $this
      ->assertEquals("\0\0\0\0\0\0\0\0\0\0", $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   * @group  issue_33
   */
  public function truncateConsidersAllFilesForQuota() {
    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
      $this
        ->markTestSkipped('Requires PHP 5.4');
    }
    if (strstr(PHP_VERSION, 'hiphop') !== false) {
      $this
        ->markTestSkipped('Not supported on hhvm');
    }
    vfsStream::newFile('bar.txt')
      ->withContent('bar')
      ->at(vfsStream::newDirectory('bar')
      ->at($this->root));
    $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
    $this
      ->assertTrue(ftruncate($fp, 11));
    fclose($fp);
    $this
      ->assertEquals(7, $this->root
      ->getChild('file.txt')
      ->size());
    $this
      ->assertEquals("\0\0\0\0\0\0\0", $this->root
      ->getChild('file.txt')
      ->getContent());
  }

  /**
   * @test
   * @group  issue_33
   */
  public function canNotTruncateToGreaterLengthWhenDiscQuotaReached() {
    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
      $this
        ->markTestSkipped('Requires PHP 5.4');
    }
    if (strstr(PHP_VERSION, 'hiphop') !== false) {
      $this
        ->markTestSkipped('Not supported on hhvm');
    }
    vfsStream::newFile('bar.txt')
      ->withContent('1234567890')
      ->at(vfsStream::newDirectory('bar')
      ->at($this->root));
    $fp = fopen(vfsStream::url('root/file.txt'), 'w+');
    $this
      ->assertFalse(ftruncate($fp, 11));
    fclose($fp);
    $this
      ->assertEquals(0, $this->root
      ->getChild('file.txt')
      ->size());
    $this
      ->assertEquals('', $this->root
      ->getChild('file.txt')
      ->getContent());
  }

}

Members