xref: /dokuwiki/_test/tests/inc/io_replaceinfile.test.php (revision 6c0002048504e43b399abece0668afa2b5c87a07)
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