Skip to content

Commit f6872f0

Browse files
authored
Merge pull request #15 from simplesamlphp/feature/enum-exceptions
Add support for enums in error message
2 parents 430c152 + 9364e88 commit f6872f0

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/Assert.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
use function array_unshift;
1616
use function call_user_func_array;
1717
use function end;
18+
use function enum_exists;
19+
use function function_exists;
20+
use function get_class;
1821
use function is_object;
1922
use function is_resource;
2023
use function is_string;
@@ -465,6 +468,10 @@ protected static function valueToString(mixed $value): string
465468
return $value::class . ': ' . self::valueToString($value->format('c'));
466469
}
467470

471+
if (function_exists('enum_exists') && enum_exists(get_class($value))) {
472+
return get_class($value) . '::' . $value->name;
473+
}
474+
468475
return $value::class;
469476
}
470477

tests/Assert/AssertTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use SimpleSAML\Assert\Assert;
1616
use SimpleSAML\Assert\AssertionFailedException;
1717
use SimpleSAML\Test\Utils\TestClass;
18+
use SimpleSAML\Test\Utils\TestEnum;
1819
use stdClass;
1920

2021
use function opendir;
@@ -143,13 +144,16 @@ public static function provideValue(): array
143144

144145
$resource = opendir(sys_get_temp_dir());
145146

147+
$enum = TestEnum::PHPUnit;
148+
146149
return [
147150
'null' => [null, 'null'],
148151
'true' => [true, 'true'],
149152
'false' => [false, 'false'],
150153
'array' => [[], 'array'],
151154
'Stringable' => [$stringable, 'SimpleSAML\Test\Utils\TestClass: "phpunit"'],
152155
'DateTime' => [$dateTime, 'DateTimeImmutable: "2000-01-01T00:00:00+00:00"'],
156+
'Enum' => [$enum, 'SimpleSAML\Test\Utils\TestEnum::PHPUnit'],
153157
'object' => [$otherObject, 'stdClass'],
154158
'resource' => [$resource, 'resource'],
155159
'string' => ['string', '"string"'],

tests/Utils/TestEnum.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SimpleSAML\Test\Utils;
6+
7+
// Declare a simple enumeration
8+
enum TestEnum
9+
{
10+
case PHPCS;
11+
case PHPStan;
12+
case PHPUnit;
13+
case Psalm;
14+
}

0 commit comments

Comments
 (0)