|
7 | 7 | use MabeEnumTest\TestAsset\Enum32;
|
8 | 8 | use MabeEnumTest\TestAsset\EnumBasic;
|
9 | 9 | use MabeEnumTest\TestAsset\EnumInheritance;
|
| 10 | +use MabeEnumTest\TestAsset\EnumMapExt; |
10 | 11 | use PHPUnit\Framework\TestCase;
|
11 | 12 | use UnexpectedValueException;
|
12 | 13 |
|
@@ -488,6 +489,34 @@ public function testIsEmpty()
|
488 | 489 | $this->assertTrue($map2->isEmpty());
|
489 | 490 | }
|
490 | 491 |
|
| 492 | + public function testDebugInfo() |
| 493 | + { |
| 494 | + $map = new EnumMapExt(EnumBasic::class); |
| 495 | + foreach (EnumBasic::getEnumerators() as $i => $enumerator) { |
| 496 | + $map->add($enumerator, $i); |
| 497 | + } |
| 498 | + |
| 499 | + $dbg = $map->__debugInfo(); |
| 500 | + |
| 501 | + $privateEnumMapPrefix = "\0" . EnumMap::class . "\0"; |
| 502 | + $privateEnumMapExtPrefix = "\0" . EnumMapExt::class . "\0"; |
| 503 | + $protectedEnumMapExtPrefix = "\0*\0"; |
| 504 | + $publicEnumMapExtPrefix = ''; |
| 505 | + |
| 506 | + // assert real properties still exists |
| 507 | + $this->assertArrayHasKey("{$privateEnumMapPrefix}enumeration", $dbg); |
| 508 | + $this->assertArrayHasKey("{$privateEnumMapPrefix}map", $dbg); |
| 509 | + $this->assertArrayHasKey("{$privateEnumMapExtPrefix}priv", $dbg); |
| 510 | + $this->assertArrayHasKey("{$protectedEnumMapExtPrefix}prot", $dbg); |
| 511 | + $this->assertArrayHasKey("{$publicEnumMapExtPrefix}pub", $dbg); |
| 512 | + |
| 513 | + // assert virtual private property __pairs |
| 514 | + $this->assertArrayHasKey("{$privateEnumMapPrefix}__pairs", $dbg); |
| 515 | + $this->assertSame(array_map(function ($k, $v) { |
| 516 | + return [$k, $v]; |
| 517 | + }, $map->getKeys(), $map->getValues()), $dbg["{$privateEnumMapPrefix}__pairs"]); |
| 518 | + } |
| 519 | + |
491 | 520 | /* deprecated */
|
492 | 521 |
|
493 | 522 | public function testContains()
|
|
0 commit comments