123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <?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\CarbonInterval;
- use BadMethodCallException;
- use Carbon\CarbonInterval;
- use InvalidArgumentException;
- use Tests\AbstractTestCase;
- class SettersTest extends AbstractTestCase
- {
- public function testSet()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->set('seconds', 34);
- $this->assertSame(34, $ci->seconds);
- $ci->set([
- 'seconds' => 59,
- 'minutes' => 33,
- ]);
- $this->assertSame(59, $ci->seconds);
- $this->assertSame(33, $ci->minutes);
- }
- public function testYearsSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->years = 2;
- $this->assertSame(2, $ci->years);
- $ci->years(5);
- $this->assertSame(5, $ci->years);
- }
- public function testMonthsSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->months = 11;
- $this->assertSame(11, $ci->months);
- $ci->months(8);
- $this->assertSame(8, $ci->months);
- }
- public function testWeeksSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->weeks = 11;
- $this->assertSame(11, $ci->weeks);
- $this->assertSame(7 * 11, $ci->dayz);
- $ci->weeks(4);
- $this->assertSame(4, $ci->weeks);
- }
- public function testDayzSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->dayz = 11;
- $this->assertSame(11, $ci->dayz);
- $this->assertSame(1, $ci->weeks);
- $this->assertSame(4, $ci->dayzExcludeWeeks);
- $ci->days(1);
- $this->assertSame(1, $ci->dayz);
- $ci->day(3);
- $this->assertSame(3, $ci->dayz);
- }
- public function testHoursSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->hours = 12;
- $this->assertSame(12, $ci->hours);
- $ci->hours(0);
- $this->assertSame(0, $ci->hours);
- }
- public function testMinutesSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->minutes = 11;
- $this->assertSame(11, $ci->minutes);
- $ci->minutes(9);
- $this->assertSame(9, $ci->minutes);
- }
- public function testSecondsSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->seconds = 34;
- $this->assertSame(34, $ci->seconds);
- $ci->seconds(59);
- $this->assertSame(59, $ci->seconds);
- $ci->second(1);
- $this->assertSame(1, $ci->seconds);
- }
- public function testMillisecondsSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->milliseconds = 34;
- $this->assertSame(34, $ci->milliseconds);
- $ci->milliseconds(59);
- $this->assertSame(59, $ci->milliseconds);
- $ci->millisecond(1);
- $this->assertSame(1, $ci->milliseconds);
- }
- public function testMicrosecondsSetter()
- {
- $ci = CarbonInterval::create(4, 5, 6, 5, 8, 9, 10);
- $ci->microseconds = 34;
- $this->assertSame(34, $ci->microseconds);
- $ci->microseconds(59);
- $this->assertSame(59, $ci->microseconds);
- $ci->microsecond(1);
- $this->assertSame(1, $ci->microseconds);
- }
- public function testFluentSetters()
- {
- $ci = CarbonInterval::years(4)->months(2)->dayz(5)->hours(3)->minute()->seconds(59);
- $this->assertInstanceOfCarbonInterval($ci);
- $this->assertCarbonInterval($ci, 4, 2, 5, 3, 1, 59);
- $ci = CarbonInterval::years(4)->months(2)->weeks(2)->hours(3)->minute()->seconds(59);
- $this->assertInstanceOfCarbonInterval($ci);
- $this->assertCarbonInterval($ci, 4, 2, 14, 3, 1, 59);
- }
- public function testFluentSettersDaysOverwritesWeeks()
- {
- $ci = CarbonInterval::weeks(3)->days(5);
- $this->assertCarbonInterval($ci, 0, 0, 5, 0, 0, 0);
- }
- public function testFluentSettersWeeksOverwritesDays()
- {
- $ci = CarbonInterval::days(5)->weeks(3);
- $this->assertCarbonInterval($ci, 0, 0, 3 * 7, 0, 0, 0);
- }
- public function testFluentSettersWeeksAndDaysIsCumulative()
- {
- $ci = CarbonInterval::year(5)->weeksAndDays(2, 6);
- $this->assertCarbonInterval($ci, 5, 0, 20, 0, 0, 0);
- $this->assertSame(20, $ci->dayz);
- $this->assertSame(2, $ci->weeks);
- $this->assertSame(6, $ci->dayzExcludeWeeks);
- }
- public function testInvert()
- {
- $ci = new CarbonInterval();
- $this->assertSame($ci, $ci->invert());
- $this->assertSame(1, $ci->invert);
- $this->assertSame($ci, $ci->invert());
- $this->assertSame(0, $ci->invert);
- $this->assertSame($ci, $ci->invert(true));
- $this->assertSame(1, $ci->invert);
- $this->assertSame($ci, $ci->invert(true));
- $this->assertSame(1, $ci->invert);
- $this->assertSame($ci, $ci->invert(false));
- $this->assertSame(0, $ci->invert);
- $this->assertSame($ci, $ci->invert(false));
- $this->assertSame(0, $ci->invert);
- }
- public function testInvalidSetter()
- {
- $this->expectExceptionObject(new InvalidArgumentException(
- 'Unknown setter \'doesNotExit\''
- ));
- /** @var mixed $ci */
- $ci = new CarbonInterval();
- $ci->doesNotExit = 123;
- }
- public function testInvalidFluentSetter()
- {
- $this->expectExceptionObject(new BadMethodCallException(
- 'Unknown fluent setter \'doesNotExit\''
- ));
- /** @var mixed $ci */
- $ci = new CarbonInterval();
- $ci->doesNotExit(123);
- }
- public function testInvalidStaticFluentSetter()
- {
- $this->expectExceptionObject(new BadMethodCallException(
- 'Unknown fluent constructor \'doesNotExit\''
- ));
- CarbonInterval::doesNotExit(123);
- }
- public function testLocale()
- {
- /** @var CarbonInterval $interval */
- $interval = CarbonInterval::hour()->locale('de');
- $this->assertSame('de', $interval->locale);
- }
- public function testTimezone()
- {
- $interval = CarbonInterval::hour()->shiftTimezone('America/Toronto');
- $this->assertSame('America/Toronto', $interval->getSettings()['timezone']);
- }
- }
|