Version 1
[yaffs-website] / vendor / mikey179 / vfsStream / src / test / php / org / bovigo / vfs / content / StringBasedFileContentTestCase.php
diff --git a/vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/content/StringBasedFileContentTestCase.php b/vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/content/StringBasedFileContentTestCase.php
new file mode 100644 (file)
index 0000000..d0e15ed
--- /dev/null
@@ -0,0 +1,230 @@
+<?php
+/**
+ * This file is part of vfsStream.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @package  org\bovigo\vfs
+ */
+namespace org\bovigo\vfs\content;
+/**
+ * Test for org\bovigo\vfs\content\StringBasedFileContent.
+ *
+ * @since  1.3.0
+ * @group  issue_79
+ */
+class StringBasedFileContentTestCase extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * instance to test
+     *
+     * @type  StringBasedFileContent
+     */
+    private $stringBasedFileContent;
+
+    /**
+     * set up test environment
+     */
+    public function setUp()
+    {
+        $this->stringBasedFileContent = new StringBasedFileContent('foobarbaz');
+    }
+
+    /**
+     * @test
+     */
+    public function hasContentOriginallySet()
+    {
+        $this->assertEquals('foobarbaz', $this->stringBasedFileContent->content());
+    }
+
+    /**
+     * @test
+     */
+    public function hasNotReachedEofAfterCreation()
+    {
+        $this->assertFalse($this->stringBasedFileContent->eof());
+    }
+
+    /**
+     * @test
+     */
+    public function sizeEqualsLengthOfGivenString()
+    {
+        $this->assertEquals(9, $this->stringBasedFileContent->size());
+    }
+
+    /**
+     * @test
+     */
+    public function readReturnsSubstringWithRequestedLength()
+    {
+        $this->assertEquals('foo', $this->stringBasedFileContent->read(3));
+    }
+
+    /**
+     * @test
+     */
+    public function readMovesOffset()
+    {
+        $this->assertEquals('foo', $this->stringBasedFileContent->read(3));
+        $this->assertEquals('bar', $this->stringBasedFileContent->read(3));
+        $this->assertEquals('baz', $this->stringBasedFileContent->read(3));
+    }
+
+    /**
+     * @test
+     */
+    public function reaMoreThanSizeReturnsWholeContent()
+    {
+        $this->assertEquals('foobarbaz', $this->stringBasedFileContent->read(10));
+    }
+
+    /**
+     * @test
+     */
+    public function readAfterEndReturnsEmptyString()
+    {
+        $this->stringBasedFileContent->read(9);
+        $this->assertEquals('', $this->stringBasedFileContent->read(3));
+    }
+
+    /**
+     * @test
+     */
+    public function readDoesNotChangeSize()
+    {
+        $this->stringBasedFileContent->read(3);
+        $this->assertEquals(9, $this->stringBasedFileContent->size());
+    }
+
+    /**
+     * @test
+     */
+    public function readLessThenSizeDoesNotReachEof()
+    {
+        $this->stringBasedFileContent->read(3);
+        $this->assertFalse($this->stringBasedFileContent->eof());
+    }
+
+    /**
+     * @test
+     */
+    public function readSizeReachesEof()
+    {
+        $this->stringBasedFileContent->read(9);
+        $this->assertTrue($this->stringBasedFileContent->eof());
+    }
+
+    /**
+     * @test
+     */
+    public function readMoreThanSizeReachesEof()
+    {
+        $this->stringBasedFileContent->read(10);
+        $this->assertTrue($this->stringBasedFileContent->eof());
+    }
+
+    /**
+     * @test
+     */
+    public function seekWithInvalidOptionReturnsFalse()
+    {
+        $this->assertFalse($this->stringBasedFileContent->seek(0, 55));
+    }
+
+    /**
+     * @test
+     */
+    public function canSeekToGivenOffset()
+    {
+        $this->assertTrue($this->stringBasedFileContent->seek(5, SEEK_SET));
+        $this->assertEquals('rbaz', $this->stringBasedFileContent->read(10));
+    }
+
+    /**
+     * @test
+     */
+    public function canSeekFromCurrentOffset()
+    {
+        $this->assertTrue($this->stringBasedFileContent->seek(5, SEEK_SET));
+        $this->assertTrue($this->stringBasedFileContent->seek(2, SEEK_CUR));
+        $this->assertEquals('az', $this->stringBasedFileContent->read(10));
+    }
+
+    /**
+     * @test
+     */
+    public function canSeekToEnd()
+    {
+        $this->assertTrue($this->stringBasedFileContent->seek(0, SEEK_END));
+        $this->assertEquals('', $this->stringBasedFileContent->read(10));
+    }
+
+    /**
+     * @test
+     */
+    public function writeOverwritesExistingContentWhenOffsetNotAtEof()
+    {
+        $this->assertEquals(3, $this->stringBasedFileContent->write('bar'));
+        $this->assertEquals('barbarbaz', $this->stringBasedFileContent->content());
+    }
+
+    /**
+     * @test
+     */
+    public function writeAppendsContentWhenOffsetAtEof()
+    {
+        $this->assertTrue($this->stringBasedFileContent->seek(0, SEEK_END));
+        $this->assertEquals(3, $this->stringBasedFileContent->write('bar'));
+        $this->assertEquals('foobarbazbar', $this->stringBasedFileContent->content());
+    }
+
+    /**
+     * @test
+     * @group  issue_33
+     * @since  1.1.0
+     */
+    public function truncateRemovesSuperflouosContent()
+    {
+        $this->assertTrue($this->stringBasedFileContent->truncate(6));
+        $this->assertEquals('foobar', $this->stringBasedFileContent->content());
+    }
+
+    /**
+     * @test
+     * @group  issue_33
+     * @since  1.1.0
+     */
+    public function truncateDecreasesSize()
+    {
+        $this->assertTrue($this->stringBasedFileContent->truncate(6));
+        $this->assertEquals(6, $this->stringBasedFileContent->size());
+    }
+
+    /**
+     * @test
+     * @group  issue_33
+     * @since  1.1.0
+     */
+    public function truncateToGreaterSizeAddsZeroBytes()
+    {
+        $this->assertTrue($this->stringBasedFileContent->truncate(25));
+        $this->assertEquals(
+                "foobarbaz\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
+                $this->stringBasedFileContent->content()
+        );
+    }
+
+    /**
+     * @test
+     * @group  issue_33
+     * @since  1.1.0
+     */
+    public function truncateToGreaterSizeIncreasesSize()
+    {
+        $this->assertTrue($this->stringBasedFileContent->truncate(25));
+        $this->assertEquals(25, $this->stringBasedFileContent->size());
+    }
+}