DirectoryTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * @category Zend
  4. * @package Zend_Search_Lucene
  5. * @subpackage UnitTests
  6. */
  7. /**
  8. * Zend_Search_Lucene_Storage_Directory_Filesystem
  9. */
  10. require_once 'Zend/Search/Lucene/Storage/Directory/Filesystem.php';
  11. /**
  12. * PHPUnit test case
  13. */
  14. require_once 'PHPUnit/Framework/TestCase.php';
  15. /**
  16. * @category Zend
  17. * @package Zend_Search_Lucene
  18. * @subpackage UnitTests
  19. */
  20. class Zend_Search_Lucene_Storage_DirectoryTest extends PHPUnit_Framework_TestCase
  21. {
  22. public function testFilesystem()
  23. {
  24. $tempPath = dirname(__FILE__) . '/_tempFiles/_files';
  25. // remove files from temporary direcytory
  26. $dir = opendir($tempPath);
  27. while (($file = readdir($dir)) !== false) {
  28. if (!is_dir($tempPath . '/' . $file)) {
  29. @unlink($tempPath . '/' . $file);
  30. }
  31. }
  32. closedir($dir);
  33. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem($tempPath);
  34. $this->assertTrue($directory instanceof Zend_Search_Lucene_Storage_Directory);
  35. $this->assertEquals(count($directory->fileList()), 0);
  36. $fileObject = $directory->createFile('file1');
  37. $this->assertTrue($fileObject instanceof Zend_Search_Lucene_Storage_File);
  38. unset($fileObject);
  39. $this->assertEquals($directory->fileLength('file1'), 0);
  40. $this->assertEquals(count(array_diff($directory->fileList(), array('file1'))), 0);
  41. $directory->deleteFile('file1');
  42. $this->assertEquals(count($directory->fileList()), 0);
  43. $this->assertFalse($directory->fileExists('file2'));
  44. $fileObject = $directory->createFile('file2');
  45. $this->assertEquals($directory->fileLength('file2'), 0);
  46. $fileObject->writeBytes('0123456789');
  47. unset($fileObject);
  48. $this->assertEquals($directory->fileLength('file2'), 10);
  49. $directory->renameFile('file2', 'file3');
  50. $this->assertEquals(count(array_diff($directory->fileList(), array('file3'))), 0);
  51. $modifiedAt1 = $directory->fileModified('file3');
  52. clearstatcache();
  53. $directory->touchFile('file3');
  54. $modifiedAt2 = $directory->fileModified('file3');
  55. sleep(1);
  56. clearstatcache();
  57. $directory->touchFile('file3');
  58. $modifiedAt3 = $directory->fileModified('file3');
  59. $this->assertTrue($modifiedAt2 >= $modifiedAt1);
  60. $this->assertTrue($modifiedAt3 > $modifiedAt2);
  61. $fileObject = $directory->getFileObject('file3');
  62. $this->assertEquals($fileObject->readBytes($directory->fileLength('file3')), '0123456789');
  63. unset($fileObject);
  64. $fileObject = $directory->createFile('file3');
  65. $this->assertEquals($fileObject->readBytes($directory->fileLength('file3')), '');
  66. unset($fileObject);
  67. $directory->deleteFile('file3');
  68. $this->assertEquals(count($directory->fileList()), 0);
  69. $directory->close();
  70. }
  71. public function testFilesystemSubfoldersAutoCreation()
  72. {
  73. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_tempFiles/_files/dir1/dir2/dir3');
  74. $this->assertTrue($directory instanceof Zend_Search_Lucene_Storage_Directory);
  75. $directory->close();
  76. rmdir(dirname(__FILE__) . '/_tempFiles/_files/dir1/dir2/dir3');
  77. rmdir(dirname(__FILE__) . '/_tempFiles/_files/dir1/dir2');
  78. rmdir(dirname(__FILE__) . '/_tempFiles/_files/dir1');
  79. }
  80. }