Skip to content

Commit 2233503

Browse files
committed
New Argument enum.
1 parent 0307aa9 commit 2233503

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

Src/Enum/Argument.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
declare( strict_types = 1 );
3+
4+
namespace TheWebSolver\Codegarage\Generator\Enum;
5+
6+
enum Argument: string {
7+
case Name = 'name';
8+
case Type = 'type';
9+
case Default = 'defaultValue';
10+
case Position = 'position';
11+
case Promoted = 'isPromoted';
12+
case Variadic = 'isVariadic';
13+
case Nullable = 'isNullable';
14+
case Reference = 'isReference';
15+
16+
/** @var array{type:self,defaultValue:self,isPromoted:self,isVariadic:self,isNullable:self,isReference:self} */
17+
public const INTRACTABLE = array(
18+
Argument::Type->value => Argument::Type,
19+
Argument::Default->value => Argument::Default,
20+
Argument::Promoted->value => Argument::Promoted,
21+
Argument::Variadic->value => Argument::Variadic,
22+
Argument::Nullable->value => Argument::Nullable,
23+
Argument::Reference->value => Argument::Reference,
24+
);
25+
26+
/** @var array{name:self,position:self} */
27+
public const NON_INTRACTABLE = array(
28+
self::Name->value => self::Name,
29+
self::Position->value => self::Position,
30+
);
31+
32+
public function isIntractable(): bool {
33+
return ! isset( self::NON_INTRACTABLE[ $this->value ] );
34+
}
35+
}

Tests/ArgumentTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
declare( strict_types = 1 );
3+
4+
namespace TheWebSolver\Codegarage;
5+
6+
use PHPUnit\Framework\TestCase;
7+
use PHPUnit\Framework\Attributes\Test;
8+
use TheWebSolver\Codegarage\Generator\Enum\Argument;
9+
10+
class ArgumentTest extends TestCase {
11+
#[Test]
12+
public function itReturnsTrueIfArgumentCaseIsIntractable(): void {
13+
foreach ( Argument::cases() as $case ) {
14+
if ( Argument::Name === $case || Argument::Position === $case ) {
15+
$this->assertFalse( $case->isIntractable() );
16+
} else {
17+
$this->assertTrue( $case->isIntractable() );
18+
}
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)