given( $filename = 'hoa://Test/Vfs/Foo?type=file', $content = 'Hello, World!', file_put_contents($filename, $content), $stream = fopen($filename, 'r'), $name = 'string.toupper' ) ->when( SUT::append($stream, $name), $result = stream_get_contents($stream) ) ->then ->string($result) ->isEqualTo(strtoupper($content)); } public function case_prepend() { $this ->given( $filename = 'hoa://Test/Vfs/Foo?type=file', $content = 'Hello, World!', file_put_contents($filename, $content), $stream = fopen($filename, 'r'), $name = 'string.toupper' ) ->when( SUT::prepend($stream, $name), $result = stream_get_contents($stream) ) ->then ->string($result) ->isEqualTo(strtoupper($content)); } public function case_append_append() { $this ->given( $filename = 'hoa://Test/Vfs/Foo?type=file', $content = 'Hello, World!', file_put_contents($filename, $content), $stream = fopen($filename, 'r'), $name1 = 'string.toupper', $name2 = 'string.tolower' ) ->when( SUT::append($stream, $name1), SUT::append($stream, $name2), $result = stream_get_contents($stream) ) ->then ->string($result) ->isEqualTo(strtolower($content)); } public function case_append_prepend() { $this ->given( $filename = 'hoa://Test/Vfs/Foo?type=file', $content = 'Hello, World!', file_put_contents($filename, $content), $stream = fopen($filename, 'r'), $name1 = 'string.toupper', $name2 = 'string.tolower' ) ->when( SUT::append($stream, $name1), SUT::prepend($stream, $name2), $result = stream_get_contents($stream) ) ->then ->string($result) ->isEqualTo(strtoupper($content)); } public function case_prepend_prepend() { $this ->given( $filename = 'hoa://Test/Vfs/Foo?type=file', $content = 'Hello, World!', file_put_contents($filename, $content), $stream = fopen($filename, 'r'), $name1 = 'string.toupper', $name2 = 'string.tolower' ) ->when( SUT::prepend($stream, $name1), SUT::prepend($stream, $name2), $result = stream_get_contents($stream) ) ->then ->string($result) ->isEqualTo(strtoupper($content)); } public function case_append_1000_filters() { $this ->given( $filename = 'hoa://Test/Vfs/Foo?type=file', $content = 'Hello, World!', file_put_contents($filename, $content), $stream = fopen($filename, 'r'), $name = 'string.toupper' ) ->when(function () use ($stream, $name) { for ($i = 1000; $i >= 0; --$i) { $this->resource(SUT::prepend($stream, $name)); } }) ->when($result = stream_get_contents($stream)) ->then ->string($result) ->isEqualTo(strtoupper($content)); } }