2024-02-02 14:53:38 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
2024-01-16 15:07:14 +00:00
|
|
|
|
|
|
|
namespace DNW\Skills\Tests\Numerics;
|
|
|
|
|
|
|
|
use DNW\Skills\Numerics\Range;
|
2024-02-01 10:50:18 +00:00
|
|
|
use PHPUnit\Framework\TestCase;
|
2024-05-14 08:46:43 +00:00
|
|
|
use PHPUnit\Framework\Attributes\CoversClass;
|
2024-01-16 15:07:14 +00:00
|
|
|
use Exception;
|
|
|
|
|
2024-05-14 08:46:43 +00:00
|
|
|
#[CoversClass(Range::class)]
|
2024-01-16 15:07:14 +00:00
|
|
|
class RangeTest extends TestCase
|
|
|
|
{
|
|
|
|
public function testConstructInvalidParam(): void
|
|
|
|
{
|
|
|
|
$this->expectException(Exception::class);
|
2024-02-21 13:29:09 +00:00
|
|
|
new Range(10, 5);
|
2024-01-16 15:07:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testFactoryInclusiveInvalidParam(): void
|
|
|
|
{
|
|
|
|
$this->expectException(Exception::class);
|
2024-02-21 13:29:09 +00:00
|
|
|
Range::inclusive(10, 5);
|
2024-01-16 15:07:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testNormalUse(): void
|
|
|
|
{
|
|
|
|
$range = Range::inclusive(1, 10);
|
|
|
|
$this->assertEquals(1, $range->getMin());
|
|
|
|
$this->assertEquals(10, $range->getMax());
|
2024-02-06 13:45:40 +00:00
|
|
|
$this->assertEquals(FALSE, $range->isInRange(0));
|
|
|
|
$this->assertEquals(TRUE, $range->isInRange(1));
|
|
|
|
$this->assertEquals(TRUE, $range->isInRange(2));
|
|
|
|
$this->assertEquals(TRUE, $range->isInRange(9));
|
|
|
|
$this->assertEquals(TRUE, $range->isInRange(10));
|
|
|
|
$this->assertEquals(FALSE, $range->isInRange(11));
|
|
|
|
|
|
|
|
$range = Range::atLeast(20);
|
|
|
|
$this->assertEquals(20, $range->getMin());
|
|
|
|
$this->assertEquals(PHP_INT_MAX, $range->getMax());
|
|
|
|
|
|
|
|
$range = Range::exactly(5);
|
|
|
|
$this->assertEquals(5, $range->getMin());
|
|
|
|
$this->assertEquals(5, $range->getMax());
|
2024-01-16 15:07:14 +00:00
|
|
|
}
|
|
|
|
}
|