public function testCopy()
{
// A file.
$filePath0 = CFile::createTemporary();
$filePath1 = CFile::createTemporary();
CFile::write($filePath0, "Hello there!");
CFile::copy($filePath0, $filePath1);
$this->assertTrue(CFile::exists($filePath0) && CFile::exists($filePath1) && CFile::read($filePath1)->equals("Hello there!"));
CFile::delete($filePath0);
CFile::delete($filePath1);
// A directory.
$directoryPath0 = CFilePath::add(CSystem::temporaryFilesDp(), CFile::DEFAULT_TEMPORARY_FILE_PREFIX . self::$ms_tempDirName);
if (CFile::exists($directoryPath0)) {
CFile::deleteDirectoryRecursive($directoryPath0);
}
CFile::createDirectory($directoryPath0);
CFile::create(CFilePath::add($directoryPath0, "file-a3"));
CFile::create(CFilePath::add($directoryPath0, "file-a20"));
CFile::create(CFilePath::add($directoryPath0, "file-a100"));
$directoryPath0Sub0 = CFilePath::add($directoryPath0, "dir-a2");
$directoryPath0Sub1 = CFilePath::add($directoryPath0, "dir-a10");
CFile::createDirectory($directoryPath0Sub0);
CFile::create(CFilePath::add($directoryPath0Sub0, "file-a2"));
CFile::create(CFilePath::add($directoryPath0Sub0, "file-a10"));
CFile::createDirectory($directoryPath0Sub1);
CFile::create(CFilePath::add($directoryPath0Sub1, "file-a2"));
CFile::create(CFilePath::add($directoryPath0Sub1, "file-a10"));
$directoryPath1 = "{$directoryPath0}-copy";
if (CFile::exists($directoryPath1)) {
CFile::deleteDirectoryRecursive($directoryPath1);
}
CFile::copy($directoryPath0, $directoryPath1);
$this->assertTrue(CFile::exists($directoryPath1));
$paths = CFile::listItemsRecursive($directoryPath1);
$comparator = function ($arrayString, $findString) {
return $arrayString->endsWith($findString);
};
$this->assertTrue($paths->length() == 9);
$this->assertTrue($paths->find("/file-a3", $comparator) && $paths->find("/file-a20", $comparator) && $paths->find("/file-a100", $comparator) && $paths->find("/dir-a2", $comparator) && $paths->find("/dir-a10", $comparator) && $paths->find("/dir-a2/file-a2", $comparator) && $paths->find("/dir-a2/file-a10", $comparator) && $paths->find("/dir-a10/file-a2", $comparator) && $paths->find("/dir-a10/file-a10", $comparator));
CFile::deleteDirectoryRecursive($directoryPath0);
CFile::deleteDirectoryRecursive($directoryPath1);
}