Skip to content

Commit 9818c63

Browse files
authored
Merge pull request #40 from jeremykendall/feature/declare-equals-final
Declare equals() as final
2 parents 527b4be + cca2caf commit 9818c63

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ function setAction(Action $action) {
5959
- `__toString()` You can `echo $myValue`, it will display the enum value (value of the constant)
6060
- `getValue()` Returns the current value of the enum
6161
- `getKey()` Returns the key of the current value on Enum
62+
- `equals()` Tests whether enum instances are equal (returns `true` if enum values are equal, `false` otherwise)
6263

6364
Static methods:
6465

src/Enum.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function __toString()
7878
*
7979
* @return bool True if Enums are equal, false if not equal
8080
*/
81-
public function equals(Enum $enum)
81+
final public function equals(Enum $enum)
8282
{
8383
return $this->getValue() === $enum->getValue();
8484
}

tests/EnumTest.php

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,32 @@ public function searchProvider() {
214214
);
215215
}
216216

217+
/**
218+
* equals()
219+
*/
217220
public function testEquals()
218221
{
219-
$enum = new EnumFixture(EnumFixture::FOO);
220-
$this->assertTrue($enum->equals(EnumFixture::FOO()));
222+
$foo = new EnumFixture(EnumFixture::FOO);
223+
$number = new EnumFixture(EnumFixture::NUMBER);
224+
$anotherFoo = new EnumFixture(EnumFixture::FOO);
225+
226+
$this->assertTrue($foo->equals($foo));
227+
$this->assertFalse($foo->equals($number));
228+
$this->assertTrue($foo->equals($anotherFoo));
229+
}
221230

222-
$enum = new EnumFixture(EnumFixture::PROBLEMATIC_BOOLEAN_FALSE);
223-
$this->assertFalse($enum->equals(EnumFixture::PROBLEMATIC_EMPTY_STRING()));
231+
/**
232+
* equals()
233+
*/
234+
public function testEqualsComparesProblematicValuesProperly()
235+
{
236+
$false = new EnumFixture(EnumFixture::PROBLEMATIC_BOOLEAN_FALSE);
237+
$emptyString = new EnumFixture(EnumFixture::PROBLEMATIC_EMPTY_STRING);
238+
$null = new EnumFixture(EnumFixture::PROBLEMATIC_NULL);
239+
240+
$this->assertTrue($false->equals($false));
241+
$this->assertFalse($false->equals($emptyString));
242+
$this->assertFalse($emptyString->equals($null));
243+
$this->assertFalse($null->equals($false));
224244
}
225245
}

0 commit comments

Comments
 (0)