1<?php 2 3/** 4 * Hoa 5 * 6 * 7 * @license 8 * 9 * New BSD License 10 * 11 * Copyright © 2007-2017, Hoa community. All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions are met: 15 * * Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * * Redistributions in binary form must reproduce the above copyright 18 * notice, this list of conditions and the following disclaimer in the 19 * documentation and/or other materials provided with the distribution. 20 * * Neither the name of the Hoa nor the names of its contributors may be 21 * used to endorse or promote products derived from this software without 22 * specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE 28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37namespace Hoa\Stream\Test\Integration\Filter; 38 39use Hoa\Stream as LUT; 40use Hoa\Stream\Filter as SUT; 41use Hoa\Test; 42 43/** 44 * Class \Hoa\Stream\Test\Integration\Filter\LateComputed. 45 * 46 * Test suite of the late computed filter class. 47 * 48 * @copyright Copyright © 2007-2017 Hoa community 49 * @license New BSD License 50 */ 51class LateComputed extends Test\Integration\Suite 52{ 53 public function case_custom_late_computed_filter() 54 { 55 $this 56 ->given( 57 $name = 'custom', 58 SUT::register($name, CustomFilter::class), 59 60 $filename = 'hoa://Test/Vfs/Foo?type=file', 61 $content = 'Hello, World!', 62 file_put_contents($filename, $content), 63 $stream = fopen($filename, 'r') 64 ) 65 ->when( 66 SUT::append($stream, $name), 67 $result = stream_get_contents($stream) 68 ) 69 ->then 70 ->string($result) 71 ->isEqualTo( 72 strtolower($content) . ' ' . 73 strlen($content) 74 ); 75 } 76} 77 78class CustomFilter extends LUT\Filter\LateComputed 79{ 80 protected function compute() 81 { 82 $this->_buffer = 83 strtolower($this->_buffer) . ' ' . 84 strlen($this->_buffer); // proof that the buffer contains all the data 85 86 return; 87 } 88} 89