You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.8 KiB
69 lines
1.8 KiB
2 months ago
|
<?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 Carbon\CarbonInterval;
|
||
|
use Carbon\CarbonPeriod;
|
||
|
use RuntimeException;
|
||
|
use Tests\AbstractTestCase;
|
||
|
|
||
|
class FloatSettersEnabledTest extends AbstractTestCase
|
||
|
{
|
||
|
protected function setUp(): void
|
||
|
{
|
||
|
parent::setUp();
|
||
|
CarbonInterval::enableFloatSetters();
|
||
|
}
|
||
|
|
||
|
protected function tearDown(): void
|
||
|
{
|
||
|
CarbonInterval::enableFloatSetters(false);
|
||
|
parent::tearDown();
|
||
|
}
|
||
|
|
||
|
public function testInheritedConstruct()
|
||
|
{
|
||
|
$ci = new CarbonInterval('PT0S');
|
||
|
$ci->hours(0.5);
|
||
|
$this->assertSame('PT30M', $ci->spec());
|
||
|
|
||
|
$ci = new CarbonInterval('P1D');
|
||
|
$ci->hours(0.5);
|
||
|
$this->assertSame('P1DT30M', $ci->spec());
|
||
|
|
||
|
$ci = new CarbonInterval('PT4H');
|
||
|
$ci->hours(0.5);
|
||
|
$this->assertSame('PT30M', $ci->spec());
|
||
|
|
||
|
$period = CarbonPeriod::since('2018-04-21 00:00:00')->hours(0.5)->until('2018-04-21 02:00:00');
|
||
|
$this->assertSame('2018-04-21 00:30:00', $period->toArray()[1]->format('Y-m-d H:i:s'));
|
||
|
|
||
|
CarbonInterval::enableFloatSetters(false);
|
||
|
$ci = new CarbonInterval('PT4H');
|
||
|
$ci->hours(0.5);
|
||
|
$this->assertSame('PT0S', $ci->spec());
|
||
|
}
|
||
|
|
||
|
public function testOverridePrevention()
|
||
|
{
|
||
|
$this->expectExceptionObject(new RuntimeException(
|
||
|
'You cannot set hour to a float value as minute would be overridden, '.
|
||
|
'set it first to 0 explicitly if you really want to erase its value'
|
||
|
));
|
||
|
|
||
|
$ci = new CarbonInterval('PT10M');
|
||
|
$ci->hours(0.5);
|
||
|
}
|
||
|
}
|