File: ModifyNearDSTChangeTest.php

package info (click to toggle)
php-nesbot-carbon 2.65.0-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 18,280 kB
  • sloc: php: 157,346; xml: 42; makefile: 26; sh: 12
file content (71 lines) | stat: -rw-r--r-- 2,440 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php

declare(strict_types=1);

/**
 * This file is part of the Carbon package.
 *
 * (c) Brian Nesbitt <brian@nesbot.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Tests\CarbonImmutable;

use Carbon\CarbonImmutable as Carbon;
use Generator;
use Tests\AbstractTestCase;

class ModifyNearDSTChangeTest extends AbstractTestCase
{
    /**
     * Tests transition through DST change hour in non default timezone
     *
     * @param string $dateString
     * @param int    $addHours
     * @param string $expected
     * @dataProvider \Tests\CarbonImmutable\ModifyNearDSTChangeTest::dataForTransitionTests
     */
    public function testTransitionInNonDefaultTimezone($dateString, $addHours, $expected)
    {
        date_default_timezone_set('Europe/london');
        $date = Carbon::parse($dateString, 'America/New_York');
        $date = $date->addHours($addHours);
        $this->assertSame($expected, $date->format('c'));
    }

    /**
     * Tests transition through DST change hour in default timezone
     *
     * @param string $dateString
     * @param int    $addHours
     * @param string $expected
     * @dataProvider \Tests\CarbonImmutable\ModifyNearDSTChangeTest::dataForTransitionTests
     */
    public function testTransitionInDefaultTimezone($dateString, $addHours, $expected)
    {
        date_default_timezone_set('America/New_York');
        $date = Carbon::parse($dateString, 'America/New_York');
        $date = $date->addHours($addHours);
        $this->assertSame($expected, $date->format('c'));
    }

    public static function dataForTransitionTests(): Generator
    {
        // arguments:
        // - Date string to Carbon::parse in America/New_York.
        // - Hours to add
        // - Resulting string in 'c' format

        // testForwardTransition
        // When standard time was about to reach 2010-03-14T02:00:00-05:00 clocks were turned forward 1 hour to
        // 2010-03-14T03:00:00-04:00 local daylight time instead
        yield ['2010-03-14T00:00:00', 24, '2010-03-15T00:00:00-04:00'];

        // testBackwardTransition
        // When local daylight time was about to reach 2010-11-07T02:00:00-04:00 clocks were turned backward 1 hour
        // to 2010-11-07T01:00:00-05:00 local standard time instead
        yield ['2010-11-07T00:00:00', 24, '2010-11-08T00:00:00-05:00'];
    }
}