public function testReFindDirectoriesOnNameRecursive()
{
$directoryPath = CFilePath::add(CSystem::temporaryFilesDp(), CFile::DEFAULT_TEMPORARY_FILE_PREFIX . self::$ms_tempDirName);
if (CFile::exists($directoryPath)) {
CFile::deleteDirectoryRecursive($directoryPath);
}
CFile::createDirectory($directoryPath);
CFile::create(CFilePath::add($directoryPath, "file-a3"));
CFile::create(CFilePath::add($directoryPath, "file-a20"));
CFile::create(CFilePath::add($directoryPath, "file-a100"));
CFile::create(CFilePath::add($directoryPath, "file-b3"));
CFile::create(CFilePath::add($directoryPath, "file-b20"));
CFile::create(CFilePath::add($directoryPath, "file-b100"));
$directoryPathSub0 = CFilePath::add($directoryPath, "dir-a2");
$directoryPathSub1 = CFilePath::add($directoryPath, "dir-a10");
$directoryPathSub2 = CFilePath::add($directoryPath, "dir-b2");
$directoryPathSub3 = CFilePath::add($directoryPath, "dir-b10");
CFile::createDirectory($directoryPathSub0);
CFile::createDirectory(CFilePath::add($directoryPathSub0, "dir-a2"));
CFile::createDirectory(CFilePath::add($directoryPathSub0, "dir-a10"));
CFile::createDirectory($directoryPathSub1);
CFile::createDirectory(CFilePath::add($directoryPathSub1, "dir-a2"));
CFile::createDirectory(CFilePath::add($directoryPathSub1, "dir-a10"));
CFile::createDirectory($directoryPathSub2);
CFile::createDirectory(CFilePath::add($directoryPathSub2, "dir-b2"));
CFile::createDirectory(CFilePath::add($directoryPathSub2, "dir-b10"));
CFile::createDirectory($directoryPathSub3);
CFile::createDirectory(CFilePath::add($directoryPathSub3, "dir-b2"));
CFile::createDirectory(CFilePath::add($directoryPathSub3, "dir-b10"));
$paths = CFile::reFindDirectoriesOnNameRecursive($directoryPath, "/^.*-b/");
$comparator = function ($arrayString, $findString) {
return $arrayString->endsWith($findString);
};
$this->assertTrue($paths->length() == 6);
$this->assertTrue($paths->find("/dir-b2", $comparator) && $paths->find("/dir-b10", $comparator) && $paths->find("/dir-b2/dir-b2", $comparator) && $paths->find("/dir-b2/dir-b10", $comparator) && $paths->find("/dir-b10/dir-b2", $comparator) && $paths->find("/dir-b10/dir-b10", $comparator));
$paths = CFile::reFindDirectoriesOnNameRecursive($directoryPath, "/^.*-b/", true);
$this->assertTrue($paths->length() == 6);
$this->assertTrue($paths[0]->endsWith("/dir-b2") && $paths[1]->endsWith("/dir-b10") && $paths[2]->endsWith("/dir-b2/dir-b2") && $paths[3]->endsWith("/dir-b2/dir-b10") && $paths[4]->endsWith("/dir-b10/dir-b2") && $paths[5]->endsWith("/dir-b10/dir-b10"));
CFile::deleteDirectoryRecursive($directoryPath);
}