From 8bb19cb5499f6ed20a789d243a8831a02f45ab8c Mon Sep 17 00:00:00 2001 From: Agustin Gomes Date: Tue, 19 Oct 2021 21:56:30 +0200 Subject: [PATCH] Add test cases for backed enum implementing interface In the Enumeration RFC, it states Backed Enums can implement interfaces, but it was not clear where the backed Enum type would need to be placed in such situation. This commit adds a test case for these scenarios. Signed-off-by: Agustin Gomes Closes GH-7593. --- .../enum/backed-implements-multiple.phpt | 58 +++++++++++++++++++ Zend/tests/enum/backed-implements.phpt | 34 +++++++++++ 2 files changed, 92 insertions(+) create mode 100644 Zend/tests/enum/backed-implements-multiple.phpt create mode 100644 Zend/tests/enum/backed-implements.phpt diff --git a/Zend/tests/enum/backed-implements-multiple.phpt b/Zend/tests/enum/backed-implements-multiple.phpt new file mode 100644 index 00000000000..8ec40fd9302 --- /dev/null +++ b/Zend/tests/enum/backed-implements-multiple.phpt @@ -0,0 +1,58 @@ +--TEST-- +Backed Enum with multiple implementing interfaces +--FILE-- + 'Red', + self::Clubs, self::Spades => 'Black', + }; + } + + public function shape(): string { + return match ($this) { + self::Hearts => 'heart', + self::Diamonds => 'diamond', + self::Clubs => 'club', + self::Spades => 'spade', + }; + } +} + +echo Suit::Hearts->color() . "\n"; +echo Suit::Hearts->shape() . "\n"; +echo Suit::Diamonds->color() . "\n"; +echo Suit::Diamonds->shape() . "\n"; +echo Suit::Clubs->color() . "\n"; +echo Suit::Clubs->shape() . "\n"; +echo Suit::Spades->color() . "\n"; +echo Suit::Spades->shape() . "\n"; + +?> +--EXPECT-- +Red +heart +Red +diamond +Black +club +Black +spade diff --git a/Zend/tests/enum/backed-implements.phpt b/Zend/tests/enum/backed-implements.phpt new file mode 100644 index 00000000000..3b06db17198 --- /dev/null +++ b/Zend/tests/enum/backed-implements.phpt @@ -0,0 +1,34 @@ +--TEST-- +Backed Enum implements +--FILE-- + 'Red', + self::Clubs, self::Spades => 'Black', + }; + } +} + +echo Suit::Hearts->color() . "\n"; +echo Suit::Diamonds->color() . "\n"; +echo Suit::Clubs->color() . "\n"; +echo Suit::Spades->color() . "\n"; + +?> +--EXPECT-- +Red +Red +Black +Black