blob: 196dd0fe32a8d878b43c3fd4b3bb5330fc6ddc41 (
plain) (
tree)
|
|
<?php
declare(strict_types=1);
namespace ZipStream\Test;
use DateTimeImmutable;
use PHPUnit\Framework\TestCase;
use ZipStream\CompressionMethod;
use ZipStream\LocalFileHeader;
class LocalFileHeaderTest extends TestCase
{
public function testSerializesCorrectly(): void
{
$dateTime = new DateTimeImmutable('2022-01-01 01:01:01Z');
$header = LocalFileHeader::generate(
versionNeededToExtract: 0x002D,
generalPurposeBitFlag: 0x2222,
compressionMethod: CompressionMethod::DEFLATE,
lastModificationDateTime: $dateTime,
crc32UncompressedData: 0x11111111,
compressedSize: 0x77777777,
uncompressedSize: 0x99999999,
fileName: 'test.png',
extraField: 'some content'
);
$this->assertSame(
bin2hex((string) $header),
'504b0304' . // 4 bytes; Local file header signature
'2d00' . // 2 bytes; Version needed to extract (minimum)
'2222' . // 2 bytes; General purpose bit flag
'0800' . // 2 bytes; Compression method; e.g. none = 0, DEFLATE = 8
'2008' . // 2 bytes; File last modification time
'2154' . // 2 bytes; File last modification date
'11111111' . // 4 bytes; CRC-32 of uncompressed data
'77777777' . // 4 bytes; Compressed size (or 0xffffffff for ZIP64)
'99999999' . // 4 bytes; Uncompressed size (or 0xffffffff for ZIP64)
'0800' . // 2 bytes; File name length (n)
'0c00' . // 2 bytes; Extra field length (m)
'746573742e706e67' . // n bytes; File name
'736f6d6520636f6e74656e74' // m bytes; Extra field
);
}
}
|