NewUnixExtraFieldTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace PhpZip\Tests\Extra\Fields;
  3. use PHPUnit\Framework\TestCase;
  4. use PhpZip\Exception\ZipException;
  5. use PhpZip\Model\Extra\Fields\NewUnixExtraField;
  6. /**
  7. * Class NewUnixExtraFieldTest.
  8. *
  9. * @internal
  10. *
  11. * @small
  12. */
  13. final class NewUnixExtraFieldTest extends TestCase
  14. {
  15. /**
  16. * @dataProvider provideExtraField
  17. *
  18. * @param int $version
  19. * @param int $uid
  20. * @param int $gid
  21. * @param string $binaryData
  22. *
  23. * @throws ZipException
  24. */
  25. public function testExtraField($version, $uid, $gid, $binaryData)
  26. {
  27. $extraField = new NewUnixExtraField($version, $uid, $gid);
  28. self::assertSame($extraField->getHeaderId(), NewUnixExtraField::HEADER_ID);
  29. self::assertSame($extraField->getVersion(), $version);
  30. self::assertSame($extraField->getGid(), $gid);
  31. self::assertSame($extraField->getUid(), $uid);
  32. self::assertEquals(NewUnixExtraField::unpackLocalFileData($binaryData), $extraField);
  33. self::assertEquals(NewUnixExtraField::unpackCentralDirData($binaryData), $extraField);
  34. self::assertSame($extraField->packLocalFileData(), $binaryData);
  35. self::assertSame($extraField->packCentralDirData(), $binaryData);
  36. }
  37. /**
  38. * @return array
  39. */
  40. public function provideExtraField()
  41. {
  42. return [
  43. [
  44. 1,
  45. NewUnixExtraField::USER_GID_PID,
  46. NewUnixExtraField::USER_GID_PID,
  47. "\x01\x04\xE8\x03\x00\x00\x04\xE8\x03\x00\x00",
  48. ],
  49. [
  50. 1,
  51. 501,
  52. 20,
  53. "\x01\x04\xF5\x01\x00\x00\x04\x14\x00\x00\x00",
  54. ],
  55. [
  56. 1,
  57. 500,
  58. 495,
  59. "\x01\x04\xF4\x01\x00\x00\x04\xEF\x01\x00\x00",
  60. ],
  61. [
  62. 1,
  63. 11252,
  64. 10545,
  65. "\x01\x04\xF4+\x00\x00\x041)\x00\x00",
  66. ],
  67. [
  68. 1,
  69. 1721,
  70. 1721,
  71. "\x01\x04\xB9\x06\x00\x00\x04\xB9\x06\x00\x00",
  72. ],
  73. ];
  74. }
  75. public function testSetter()
  76. {
  77. $extraField = new NewUnixExtraField(1, 1000, 1000);
  78. self::assertSame(1, $extraField->getVersion());
  79. self::assertSame(1000, $extraField->getUid());
  80. self::assertSame(1000, $extraField->getGid());
  81. $extraField->setUid(0);
  82. self::assertSame(0, $extraField->getUid());
  83. self::assertSame(1000, $extraField->getGid());
  84. $extraField->setGid(0);
  85. self::assertSame(0, $extraField->getUid());
  86. self::assertSame(0, $extraField->getGid());
  87. }
  88. }