1<?php
2
3namespace Sabre\DAV\FSExt;
4
5require_once 'Sabre/TestUtil.php';
6
7class FileTest extends \PHPUnit_Framework_TestCase {
8
9    function setUp() {
10
11        file_put_contents(SABRE_TEMPDIR . '/file.txt', 'Contents');
12
13    }
14
15    function tearDown() {
16
17        \Sabre\TestUtil::clearTempDir();
18
19    }
20
21    function testPut() {
22
23        $filename = SABRE_TEMPDIR . '/file.txt';
24        $file = new File($filename);
25        $result = $file->put('New contents');
26
27        $this->assertEquals('New contents', file_get_contents(SABRE_TEMPDIR . '/file.txt'));
28        $this->assertEquals(
29            '"' .
30            sha1(
31                fileinode($filename) .
32                filesize($filename) .
33                filemtime($filename)
34            ) . '"',
35            $result
36        );
37
38    }
39
40    function testRange() {
41
42        $file = new File(SABRE_TEMPDIR . '/file.txt');
43        $file->put('0000000');
44        $file->patch('111', 2, 3);
45
46        $this->assertEquals('0001110', file_get_contents(SABRE_TEMPDIR . '/file.txt'));
47
48    }
49
50    function testRangeStream() {
51
52        $stream = fopen('php://memory', 'r+');
53        fwrite($stream, "222");
54        rewind($stream);
55
56        $file = new File(SABRE_TEMPDIR . '/file.txt');
57        $file->put('0000000');
58        $file->patch($stream, 2, 3);
59
60        $this->assertEquals('0002220', file_get_contents(SABRE_TEMPDIR . '/file.txt'));
61
62    }
63
64
65    function testGet() {
66
67        $file = new File(SABRE_TEMPDIR . '/file.txt');
68        $this->assertEquals('Contents', stream_get_contents($file->get()));
69
70    }
71
72    function testDelete() {
73
74        $file = new File(SABRE_TEMPDIR . '/file.txt');
75        $file->delete();
76
77        $this->assertFalse(file_exists(SABRE_TEMPDIR . '/file.txt'));
78
79    }
80
81    function testGetETag() {
82
83        $filename = SABRE_TEMPDIR . '/file.txt';
84        $file = new File($filename);
85        $this->assertEquals(
86            '"' .
87            sha1(
88                fileinode($filename) .
89                filesize($filename) .
90                filemtime($filename)
91            ) . '"',
92            $file->getETag()
93        );
94    }
95
96    function testGetContentType() {
97
98        $file = new File(SABRE_TEMPDIR . '/file.txt');
99        $this->assertNull($file->getContentType());
100
101    }
102
103    function testGetSize() {
104
105        $file = new File(SABRE_TEMPDIR . '/file.txt');
106        $this->assertEquals(8, $file->getSize());
107
108    }
109
110}
111