Initial commit after upgrading to php 8.3 and splitting to seperated tool chain
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tez\Utils\Tests\Enum;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Tez\Utils\Enum\EnumTrait;
|
||||
use Tez\Utils\Enum\StepTrait;
|
||||
|
||||
enum OrderStatus
|
||||
{
|
||||
use EnumTrait;
|
||||
use StepTrait;
|
||||
|
||||
case Draft;
|
||||
case Pending;
|
||||
case Shipped;
|
||||
case Delivered;
|
||||
case Cancelled;
|
||||
}
|
||||
|
||||
final class StepTraitTest extends TestCase
|
||||
{
|
||||
// -------------------------------------------------------------------------
|
||||
// next()
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public function testNextReturnsFollowingCase(): void
|
||||
{
|
||||
self::assertSame(OrderStatus::Shipped, OrderStatus::Pending->next());
|
||||
}
|
||||
|
||||
public function testNextFromFirstReturnsSecond(): void
|
||||
{
|
||||
self::assertSame(OrderStatus::Pending, OrderStatus::Draft->next());
|
||||
}
|
||||
|
||||
public function testNextFromLastReturnsNull(): void
|
||||
{
|
||||
self::assertNull(OrderStatus::Cancelled->next());
|
||||
}
|
||||
|
||||
public function testNextFromSecondToLastReturnsLast(): void
|
||||
{
|
||||
self::assertSame(OrderStatus::Cancelled, OrderStatus::Delivered->next());
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// prev()
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public function testPrevReturnsPrecedingCase(): void
|
||||
{
|
||||
self::assertSame(OrderStatus::Draft, OrderStatus::Pending->prev());
|
||||
}
|
||||
|
||||
public function testPrevFromLastReturnsPenultimate(): void
|
||||
{
|
||||
self::assertSame(OrderStatus::Delivered, OrderStatus::Cancelled->prev());
|
||||
}
|
||||
|
||||
public function testPrevFromFirstReturnsNull(): void
|
||||
{
|
||||
self::assertNull(OrderStatus::Draft->prev());
|
||||
}
|
||||
|
||||
public function testPrevFromSecondReturnsFirst(): void
|
||||
{
|
||||
self::assertSame(OrderStatus::Draft, OrderStatus::Pending->prev());
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Chaining
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public function testNextThenPrevReturnsSameCase(): void
|
||||
{
|
||||
$case = OrderStatus::Pending;
|
||||
|
||||
self::assertSame($case, $case->next()?->prev());
|
||||
}
|
||||
|
||||
public function testPrevThenNextReturnsSameCase(): void
|
||||
{
|
||||
$case = OrderStatus::Shipped;
|
||||
|
||||
self::assertSame($case, $case->prev()?->next());
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Single-case enum edge case
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public function testNextAndPrevReturnNullForOnlyCase(): void
|
||||
{
|
||||
self::assertNull(Alone::Only->next());
|
||||
self::assertNull(Alone::Only->prev());
|
||||
}
|
||||
}
|
||||
|
||||
enum Alone
|
||||
{
|
||||
use StepTrait;
|
||||
|
||||
case Only;
|
||||
}
|
||||
Reference in New Issue
Block a user