--- /dev/null
+<?php
+
+require_once 'Sabre/TestUtil.php';
+
+class Sabre_DAV_ObjectTreeTest extends PHPUnit_Framework_TestCase {
+
+ protected $tree;
+
+ function setup() {
+
+ Sabre_TestUtil::clearTempDir();
+ mkdir(SABRE_TEMPDIR . '/root');
+ mkdir(SABRE_TEMPDIR . '/root/subdir');
+ file_put_contents(SABRE_TEMPDIR . '/root/file.txt','contents');
+ file_put_contents(SABRE_TEMPDIR . '/root/subdir/subfile.txt','subcontents');
+ $rootNode = new Sabre_DAV_FSExt_Directory(SABRE_TEMPDIR . '/root');
+ $this->tree = new Sabre_DAV_ObjectTree($rootNode);
+
+ }
+
+ function teardown() {
+
+ Sabre_TestUtil::clearTempDir();
+
+ }
+
+ function testGetRootNode() {
+
+ $root = $this->tree->getNodeForPath('');
+ $this->assertInstanceOf('Sabre_DAV_FSExt_Directory',$root);
+
+ }
+
+ function testGetSubDir() {
+
+ $root = $this->tree->getNodeForPath('subdir');
+ $this->assertInstanceOf('Sabre_DAV_FSExt_Directory',$root);
+
+ }
+
+ function testCopyFile() {
+
+ $this->tree->copy('file.txt','file2.txt');
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/file2.txt'));
+ $this->assertEquals('contents',file_get_contents(SABRE_TEMPDIR.'/root/file2.txt'));
+
+ }
+
+ /**
+ * @depends testCopyFile
+ */
+ function testCopyDirectory() {
+
+ $this->tree->copy('subdir','subdir2');
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2'));
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2/subfile.txt'));
+ $this->assertEquals('subcontents',file_get_contents(SABRE_TEMPDIR.'/root/subdir2/subfile.txt'));
+
+ }
+
+ /**
+ * @depends testCopyFile
+ */
+ function testMoveFile() {
+
+ $this->tree->move('file.txt','file2.txt');
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/file2.txt'));
+ $this->assertFalse(file_exists(SABRE_TEMPDIR.'/root/file.txt'));
+ $this->assertEquals('contents',file_get_contents(SABRE_TEMPDIR.'/root/file2.txt'));
+
+ }
+
+ /**
+ * @depends testMoveFile
+ */
+ function testMoveFileNewParent() {
+
+ $this->tree->move('file.txt','subdir/file2.txt');
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir/file2.txt'));
+ $this->assertFalse(file_exists(SABRE_TEMPDIR.'/root/file.txt'));
+ $this->assertEquals('contents',file_get_contents(SABRE_TEMPDIR.'/root/subdir/file2.txt'));
+
+ }
+
+ /**
+ * @depends testCopyDirectory
+ */
+ function testMoveDirectory() {
+
+ $this->tree->move('subdir','subdir2');
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2'));
+ $this->assertTrue(file_exists(SABRE_TEMPDIR.'/root/subdir2/subfile.txt'));
+ $this->assertFalse(file_exists(SABRE_TEMPDIR.'/root/subdir'));
+ $this->assertEquals('subcontents',file_get_contents(SABRE_TEMPDIR.'/root/subdir2/subfile.txt'));
+
+ }
+
+}