HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: /home/armgroup/libs/vendor/maennchen/zipstream-php/test/TimeTest.php
<?php

declare(strict_types=1);

namespace ZipStream\Test;

use DateTimeImmutable;
use PHPUnit\Framework\TestCase;
use ZipStream\Exception\DosTimeOverflowException;
use ZipStream\Time;

class TimeTest extends TestCase
{
    public function testNormalDateToDosTime(): void
    {
        $this->assertSame(
            Time::dateTimeToDosTime(new DateTimeImmutable('2014-11-17T17:46:08Z')),
            1165069764
        );

        // January 1 1980 - DOS Epoch.
        $this->assertSame(
            Time::dateTimeToDosTime(new DateTimeImmutable('1980-01-01T00:00:00+00:00')),
            2162688
        );

        // Local timezone different than UTC.
        $prevLocalTimezone = date_default_timezone_get();
        date_default_timezone_set('Europe/Berlin');
        $this->assertSame(
            Time::dateTimeToDosTime(new DateTimeImmutable('1980-01-01T00:00:00+00:00')),
            2162688
        );
        date_default_timezone_set($prevLocalTimezone);
    }

    public function testTooEarlyDateToDosTime(): void
    {
        $this->expectException(DosTimeOverflowException::class);

        // January 1 1980 is the minimum DOS Epoch.
        Time::dateTimeToDosTime(new DateTimeImmutable('1970-01-01T00:00:00+00:00'));
    }
}