123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- <?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 DateTime;
- use DateTimeZone;
- use Tests\AbstractTestCase;
- class ConstructTest extends AbstractTestCase
- {
- public function testCreatesAnInstanceDefaultToNow()
- {
- $c = new Carbon();
- $now = Carbon::now();
- $this->assertInstanceOfCarbon($c);
- $this->assertSame($now->tzName, $c->tzName);
- $this->assertCarbon($c, $now->year, $now->month, $now->day, $now->hour, $now->minute, $now->second);
- }
- public function testCreatesAnInstanceFromADateTime()
- {
- $c = new Carbon(Carbon::parse('2009-09-09 09:09:09'));
- $this->assertSame('2009-09-09 09:09:09 America/Toronto', $c->format('Y-m-d H:i:s e'));
- $c = new Carbon(new DateTime('2009-09-09 09:09:09'));
- $this->assertSame('2009-09-09 09:09:09 America/Toronto', $c->format('Y-m-d H:i:s e'));
- $c = new Carbon(new DateTime('2009-09-09 09:09:09', new DateTimeZone('Europe/Paris')));
- $this->assertSame('2009-09-09 09:09:09 Europe/Paris', $c->format('Y-m-d H:i:s e'));
- $c = new Carbon(new DateTime('2009-09-09 09:09:09'), 'Europe/Paris');
- $this->assertSame('2009-09-09 15:09:09 Europe/Paris', $c->format('Y-m-d H:i:s e'));
- $c = new Carbon(new DateTime('2009-09-09 09:09:09', new DateTimeZone('Asia/Tokyo')), 'Europe/Paris');
- $this->assertSame('2009-09-09 02:09:09 Europe/Paris', $c->format('Y-m-d H:i:s e'));
- \Carbon\Carbon::useStrictMode(false);
- $c = new Carbon(new DateTime('2009-09-09 09:09:09', new DateTimeZone('Asia/Tokyo')), '¤¤ Incorrect Timezone ¤¤');
- $this->assertSame('2009-09-09 09:09:09 America/Toronto', $c->format('Y-m-d H:i:s e'));
- }
- public function testParseCreatesAnInstanceDefaultToNow()
- {
- $c = Carbon::parse();
- $now = Carbon::now();
- $this->assertInstanceOfCarbon($c);
- $this->assertSame($now->tzName, $c->tzName);
- $this->assertCarbon($c, $now->year, $now->month, $now->day, $now->hour, $now->minute, $now->second);
- }
- public function testWithFancyString()
- {
- Carbon::setTestNow(Carbon::today());
- $c = new Carbon('first day of January 2008');
- $this->assertCarbon($c, 2008, 1, 1, 0, 0, 0);
- }
- public function testParseWithFancyString()
- {
- Carbon::setTestNow(Carbon::today());
- $c = Carbon::parse('first day of January 2008');
- $this->assertCarbon($c, 2008, 1, 1, 0, 0, 0);
- }
- public function testParseWithYYYMMDD()
- {
- $c = Carbon::parse('20201128');
- $this->assertCarbon($c, 2020, 11, 28, 0, 0, 0);
- }
- public function testParseWithYYYMMDDHHMMSS()
- {
- $c = Carbon::parse('20201128192533');
- $this->assertCarbon($c, 2020, 11, 28, 19, 25, 33);
- }
- public function testDefaultTimezone()
- {
- $c = new Carbon('now');
- $this->assertSame('America/Toronto', $c->tzName);
- }
- public function testParseWithDefaultTimezone()
- {
- $c = Carbon::parse('now');
- $this->assertSame('America/Toronto', $c->tzName);
- }
- public function testSettingTimezone()
- {
- $timezone = 'Europe/London';
- $dtz = new DateTimeZone($timezone);
- $dt = new DateTime('now', $dtz);
- $dayLightSavingTimeOffset = (int) $dt->format('I');
- $c = new Carbon('now', $dtz);
- $this->assertSame($timezone, $c->tzName);
- $this->assertSame($dayLightSavingTimeOffset, $c->offsetHours);
- }
- public function testParseSettingTimezone()
- {
- $timezone = 'Europe/London';
- $dtz = new DateTimeZone($timezone);
- $dt = new DateTime('now', $dtz);
- $dayLightSavingTimeOffset = (int) $dt->format('I');
- $c = Carbon::parse('now', $dtz);
- $this->assertSame($timezone, $c->tzName);
- $this->assertSame($dayLightSavingTimeOffset, $c->offsetHours);
- }
- public function testSettingTimezoneWithString()
- {
- $timezone = 'Asia/Tokyo';
- $dtz = new DateTimeZone($timezone);
- $dt = new DateTime('now', $dtz);
- $dayLightSavingTimeOffset = (int) $dt->format('I');
- $c = new Carbon('now', $timezone);
- $this->assertSame($timezone, $c->tzName);
- $this->assertSame(9 + $dayLightSavingTimeOffset, $c->offsetHours);
- }
- public function testParseSettingTimezoneWithString()
- {
- $timezone = 'Asia/Tokyo';
- $dtz = new DateTimeZone($timezone);
- $dt = new DateTime('now', $dtz);
- $dayLightSavingTimeOffset = (int) $dt->format('I');
- $c = Carbon::parse('now', $timezone);
- $this->assertSame($timezone, $c->tzName);
- $this->assertSame(9 + $dayLightSavingTimeOffset, $c->offsetHours);
- }
- public function testMockingWithMicroseconds()
- {
- $c = new Carbon(Carbon::now()->toDateTimeString().'.123456');
- Carbon::setTestNow($c);
- $mockedC = Carbon::now();
- $this->assertTrue($c->eq($mockedC));
- Carbon::setTestNow();
- }
- public function testTimestamp()
- {
- $date = new Carbon(1367186296);
- $this->assertSame('Sunday 28 April 2013 21:58:16.000000', $date->format('l j F Y H:i:s.u'));
- $date = new Carbon(123);
- $this->assertSame('Thursday 1 January 1970 00:02:03.000000', $date->format('l j F Y H:i:s.u'));
- }
- public function testFloatTimestamp()
- {
- $date = new Carbon(1367186296.654321);
- $this->assertSame('Sunday 28 April 2013 21:58:16.654321', $date->format('l j F Y H:i:s.u'));
- $date = new Carbon(123.5);
- $this->assertSame('Thursday 1 January 1970 00:02:03.500000', $date->format('l j F Y H:i:s.u'));
- }
- }
|