FileTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. /**
  3. * @category Zend
  4. * @package Zend_Search_Lucene
  5. * @subpackage UnitTests
  6. */
  7. /**
  8. * Zend_Search_Lucene_Storage_File_Filesystem
  9. */
  10. require_once 'Zend/Search/Lucene/Storage/File/Filesystem.php';
  11. /**
  12. * Zend_Search_Lucene_Storage_File_Memory
  13. */
  14. require_once 'Zend/Search/Lucene/Storage/File/Memory.php';
  15. /**
  16. * PHPUnit test case
  17. */
  18. require_once 'PHPUnit/Framework/TestCase.php';
  19. /**
  20. * @category Zend
  21. * @package Zend_Search_Lucene
  22. * @subpackage UnitTests
  23. */
  24. class Zend_Search_Lucene_Storage_FileTest extends PHPUnit_Framework_TestCase
  25. {
  26. public function testFilesystem()
  27. {
  28. $file = new Zend_Search_Lucene_Storage_File_Filesystem(dirname(__FILE__) . '/_files/sample_data'); // open file object for reading
  29. $this->assertTrue($file instanceof Zend_Search_Lucene_Storage_File);
  30. $fileSize = filesize(dirname(__FILE__) . '/_files/sample_data');
  31. $this->assertEquals($file->size(), $fileSize);
  32. $file->seek(0, SEEK_END);
  33. $this->assertEquals($file->tell(), $fileSize);
  34. $file->seek(2, SEEK_SET);
  35. $this->assertEquals($file->tell(), 2);
  36. $file->seek(3, SEEK_CUR);
  37. $this->assertEquals($file->tell(), 5);
  38. $file->seek(0, SEEK_SET);
  39. $this->assertEquals($file->tell(), 0);
  40. $this->assertEquals($file->readByte(), 10);
  41. $this->assertEquals($file->readBytes(8), "\xFF\x00\xAA\x11\xBB\x44\x66\x99");
  42. $this->assertEquals($file->readInt(), 49057123);
  43. $this->assertEquals($file->readLong(), 753823522);
  44. $this->assertEquals($file->readVInt(), 234586758);
  45. $this->assertEquals($file->readString(), "UTF-8 string with non-ascii (Cyrillic) symbols\nUTF-8 строка с не-ASCII (кириллическими) символами");
  46. $this->assertEquals($file->readBinary(), "\xFF\x00\xAA\x11\xBB\x44\x66\x99");
  47. $file->seek(0);
  48. $fileData = $file->readBytes($file->size());
  49. $file->close();
  50. unset($file);
  51. $testFName = dirname(__FILE__) . '/_files/sample_data_1';
  52. $file = new Zend_Search_Lucene_Storage_File_Filesystem($testFName, 'wb');
  53. $file->lock(LOCK_EX);
  54. $file->writeByte(10);
  55. $file->writeBytes("\xFF\x00\xAA\x11\xBB\x44\x66\x99");
  56. $file->writeInt(49057123);
  57. $file->writeLong(753823522);
  58. $file->writeVInt(234586758);
  59. $file->writeString("UTF-8 string with non-ascii (Cyrillic) symbols\nUTF-8 строка с не-ASCII (кириллическими) символами");
  60. $file->writeVInt(8); $file->writeBytes("\xFF\x00\xAA\x11\xBB\x44\x66\x99");
  61. $file->flush();
  62. $file->unlock();
  63. $file->close();
  64. $fh = fopen($testFName, 'rb');
  65. $this->assertEquals($fileData, fread($fh, filesize($testFName)));
  66. fclose($fh);
  67. unlink($testFName);
  68. }
  69. public function testMemory()
  70. {
  71. $file = new Zend_Search_Lucene_Storage_File_Filesystem(dirname(__FILE__) . '/_files/sample_data');
  72. $fileData = $file->readBytes($file->size());
  73. $file->close();
  74. unset($file);
  75. $file = new Zend_Search_Lucene_Storage_File_Memory($fileData);
  76. $this->assertTrue($file instanceof Zend_Search_Lucene_Storage_File);
  77. $fileSize = strlen($fileData);
  78. $file->seek(0, SEEK_END);
  79. $this->assertEquals($file->tell(), $fileSize);
  80. $file->seek(2, SEEK_SET);
  81. $this->assertEquals($file->tell(), 2);
  82. $file->seek(3, SEEK_CUR);
  83. $this->assertEquals($file->tell(), 5);
  84. $file->seek(0, SEEK_SET);
  85. $this->assertEquals($file->tell(), 0);
  86. $this->assertEquals($file->readByte(), 10);
  87. $this->assertEquals($file->readBytes(8), "\xFF\x00\xAA\x11\xBB\x44\x66\x99");
  88. $this->assertEquals($file->readInt(), 49057123);
  89. $this->assertEquals($file->readLong(), 753823522);
  90. $this->assertEquals($file->readVInt(), 234586758);
  91. $this->assertEquals($file->readString(), "UTF-8 string with non-ascii (Cyrillic) symbols\nUTF-8 строка с не-ASCII (кириллическими) символами");
  92. $this->assertEquals($file->readBinary(), "\xFF\x00\xAA\x11\xBB\x44\x66\x99");
  93. // these methods do nothing, but should be provided by object
  94. $file->lock(LOCK_EX);
  95. $file->unlock();
  96. }
  97. }