Skip to content

Commit e82f2b2

Browse files
committed
fixes #42: Enum::is() not working on inherited enumerations
1 parent 8c3af2e commit e82f2b2

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/MabeEnum/Enum.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ final public function getOrdinal()
128128
*/
129129
final public function is($enum)
130130
{
131-
return $this->value === $enum || ($enum instanceof static && $this->value === $enum->getValue());
131+
return $this->value === $enum
132+
|| (($enum instanceof static || $this instanceof $enum) && $this->value === $enum->getValue());
132133
}
133134

134135
/**

tests/MabeEnumTest/EnumTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,21 @@ public function testIsBasic()
147147
$this->assertFalse($enum->is(EnumBasic2::ONE())); // same value but different instance
148148
}
149149

150+
public function testIsExtended()
151+
{
152+
$enum1Basic = EnumBasic::ONE();
153+
$enum1Inherited = EnumInheritance::ONE();
154+
$enumExtended = EnumInheritance::INHERITANCE();
155+
156+
$this->assertTrue($enum1Basic->is($enum1Inherited));
157+
$this->assertTrue($enum1Inherited->is($enum1Basic));
158+
159+
$this->assertFalse($enumExtended->is($enum1Basic));
160+
$this->assertFalse($enumExtended->is($enum1Inherited));
161+
$this->assertFalse($enum1Basic->is($enumExtended));
162+
$this->assertFalse($enum1Inherited->is($enumExtended));
163+
}
164+
150165
public function testCallingGetOrdinalTwoTimesWillResultTheSameValue()
151166
{
152167
$enum = EnumBasic::get(EnumBasic::TWO);

0 commit comments

Comments
 (0)