123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- <?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\Carbon;
- use Carbon\Carbon;
- use Generator;
- use Tests\AbstractTestCase;
- class AddMonthsTest extends AbstractTestCase
- {
- /**
- * @var \Carbon\Carbon
- */
- private $carbon;
- protected function setUp(): void
- {
- parent::setUp();
- $date = Carbon::create(2016, 1, 31);
- $this->carbon = $date;
- }
- public static function dataForTestAddMonthNoOverflow(): Generator
- {
- yield [-2, 2015, 11, 30];
- yield [-1, 2015, 12, 31];
- yield [0, 2016, 1, 31];
- yield [1, 2016, 2, 29];
- yield [2, 2016, 3, 31];
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testAddMonthNoOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->addMonthNoOverflow($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testAddMonthsNoOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->addMonthsNoOverflow($months), $y, $m, $d);
- }
- public static function dataForTestSubMonthNoOverflow(): Generator
- {
- yield [-2, 2016, 3, 31];
- yield [-1, 2016, 2, 29];
- yield [0, 2016, 1, 31];
- yield [1, 2015, 12, 31];
- yield [2, 2015, 11, 30];
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSubMonthNoOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->subMonthNoOverflow($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSubMonthsNoOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->subMonthsNoOverflow($months), $y, $m, $d);
- }
- public static function dataForTestAddMonthWithOverflow(): Generator
- {
- yield [-2, 2015, 12, 1];
- yield [-1, 2015, 12, 31];
- yield [0, 2016, 1, 31];
- yield [1, 2016, 3, 2];
- yield [2, 2016, 3, 31];
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testAddMonthWithOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->addMonthWithOverflow($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testAddMonthsWithOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->addMonthsWithOverflow($months), $y, $m, $d);
- }
- public static function dataForTestSubMonthWithOverflow(): Generator
- {
- yield [-2, 2016, 3, 31];
- yield [-1, 2016, 3, 2];
- yield [0, 2016, 1, 31];
- yield [1, 2015, 12, 31];
- yield [2, 2015, 12, 1];
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSubMonthWithOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->subMonthWithOverflow($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSubMonthsWithOverflow($months, $y, $m, $d)
- {
- $this->assertCarbon($this->carbon->subMonthsWithOverflow($months), $y, $m, $d);
- }
- public function testSetOverflowIsTrue()
- {
- Carbon::useMonthsOverflow(true);
- $this->assertTrue(Carbon::shouldOverflowMonths());
- }
- public function testSetOverflowIsFalse()
- {
- Carbon::useMonthsOverflow(false);
- $this->assertFalse(Carbon::shouldOverflowMonths());
- }
- public function testSetOverflowIsResetInTests()
- {
- $this->assertTrue(Carbon::shouldOverflowMonths());
- }
- public function testSetOverflowIsReset()
- {
- Carbon::useMonthsOverflow(false);
- $this->assertFalse(Carbon::shouldOverflowMonths());
- Carbon::resetMonthsOverflow();
- $this->assertTrue(Carbon::shouldOverflowMonths());
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testUseOverflowAddMonth($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(true);
- $this->assertCarbon($this->carbon->addMonth($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testUseOverflowAddMonths($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(true);
- $this->assertCarbon($this->carbon->addMonths($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testUseOverflowSubMonth($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(true);
- $this->assertCarbon($this->carbon->subMonth($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthWithOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testUseOverflowSubMonths($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(true);
- $this->assertCarbon($this->carbon->subMonths($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSkipOverflowAddMonth($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(false);
- $this->assertCarbon($this->carbon->addMonth($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestAddMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSkipOverflowAddMonths($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(false);
- $this->assertCarbon($this->carbon->addMonths($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSkipOverflowSubMonth($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(false);
- $this->assertCarbon($this->carbon->subMonth($months), $y, $m, $d);
- }
- /**
- * @dataProvider \Tests\Carbon\AddMonthsTest::dataForTestSubMonthNoOverflow
- *
- * @param int $months
- * @param int $y
- * @param int $m
- * @param int $d
- */
- public function testSkipOverflowSubMonths($months, $y, $m, $d)
- {
- Carbon::useMonthsOverflow(false);
- $this->assertCarbon($this->carbon->subMonths($months), $y, $m, $d);
- }
- }
|