Move all banners to GitHub. Adds library phpspreadsheet to JCB. Adds import item example to demo component. Updates the Superpower class with the GetRemote class in the plugin. Ensures the super power autoloader triggers the correct repositories.
48 lines
1.7 KiB
PHP
48 lines
1.7 KiB
PHP
<?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
|
|
);
|
|
}
|
|
}
|