1*6c000204SPatrick Brown<?php 2*6c000204SPatrick Brown 3*6c000204SPatrick Brownclass io_replaceinfile_test extends DokuWikiTest { 4*6c000204SPatrick Brown 5*6c000204SPatrick Brown /* 6*6c000204SPatrick Brown * dependency for tests needing zlib extension to pass 7*6c000204SPatrick Brown */ 8*6c000204SPatrick Brown public function test_ext_zlib() { 9*6c000204SPatrick Brown if (!extension_loaded('zlib')) { 10*6c000204SPatrick Brown $this->markTestSkipped('skipping all zlib tests. Need zlib extension'); 11*6c000204SPatrick Brown } 12*6c000204SPatrick Brown } 13*6c000204SPatrick Brown 14*6c000204SPatrick Brown /* 15*6c000204SPatrick Brown * dependency for tests needing zlib extension to pass 16*6c000204SPatrick Brown */ 17*6c000204SPatrick Brown public function test_ext_bz2() { 18*6c000204SPatrick Brown if (!extension_loaded('bz2')) { 19*6c000204SPatrick Brown $this->markTestSkipped('skipping all bzip2 tests. Need bz2 extension'); 20*6c000204SPatrick Brown } 21*6c000204SPatrick Brown } 22*6c000204SPatrick Brown 23*6c000204SPatrick Brown function _write($file){ 24*6c000204SPatrick Brown $contents = "The\012Delete\012Delete\012Delete01\012Delete02\012Delete\012DeleteX\012Test\012"; 25*6c000204SPatrick Brown io_saveFile($file, $contents); 26*6c000204SPatrick Brown // Replace one, no regex 27*6c000204SPatrick Brown $this->assertTrue(io_replaceInFile($file, "Delete\012", "Delete00\012", false, 1)); 28*6c000204SPatrick Brown $this->assertEquals("The\012Delete00\012Delete\012Delete01\012Delete02\012Delete\012DeleteX\012Test\012", io_readFile($file)); 29*6c000204SPatrick Brown // Replace all, no regex 30*6c000204SPatrick Brown $this->assertTrue(io_replaceInFile($file, "Delete\012", "DeleteX\012", false, -1)); 31*6c000204SPatrick Brown $this->assertEquals("The\012Delete00\012DeleteX\012Delete01\012Delete02\012DeleteX\012DeleteX\012Test\012", io_readFile($file)); 32*6c000204SPatrick Brown // Replace two, regex and backreference 33*6c000204SPatrick Brown $this->assertTrue(io_replaceInFile($file, "#Delete(\\d+)\012#", "\\1\012", true, 2)); 34*6c000204SPatrick Brown $this->assertEquals("The\01200\012DeleteX\01201\012Delete02\012DeleteX\012DeleteX\012Test\012", io_readFile($file)); 35*6c000204SPatrick Brown // Delete and insert, no regex 36*6c000204SPatrick Brown $this->assertTrue(io_replaceInFile($file, "DeleteX\012", "Replace\012", false, 0)); 37*6c000204SPatrick Brown $this->assertEquals("The\01200\01201\012Delete02\012Test\012Replace\012", io_readFile($file)); 38*6c000204SPatrick Brown } 39*6c000204SPatrick Brown 40*6c000204SPatrick Brown function test_replace(){ 41*6c000204SPatrick Brown $this->_write(TMP_DIR.'/test.txt'); 42*6c000204SPatrick Brown } 43*6c000204SPatrick Brown 44*6c000204SPatrick Brown /** 45*6c000204SPatrick Brown * @depends test_ext_zlib 46*6c000204SPatrick Brown */ 47*6c000204SPatrick Brown function test_gzwrite(){ 48*6c000204SPatrick Brown $this->_write(TMP_DIR.'/test.txt.gz'); 49*6c000204SPatrick Brown } 50*6c000204SPatrick Brown 51*6c000204SPatrick Brown /** 52*6c000204SPatrick Brown * @depends test_ext_bz2 53*6c000204SPatrick Brown */ 54*6c000204SPatrick Brown function test_bzwrite(){ 55*6c000204SPatrick Brown $this->_write(TMP_DIR.'/test.txt.bz2'); 56*6c000204SPatrick Brown } 57*6c000204SPatrick Brown 58*6c000204SPatrick Brown} 59