Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Tests: Add BackedEnum::values() test suite for enums
  • Loading branch information
savinmikhail committed Nov 5, 2025
commit 6316025a8795f806a5e12202bfea48011a1800bf
14 changes: 14 additions & 0 deletions Zend/tests/enum/backed-values-empty.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
--TEST--
Backed enums: values() on empty enum returns []
--FILE--
<?php

enum A: string {}

var_dump(A::values());

?>
--EXPECT--
array(0) {
}

20 changes: 20 additions & 0 deletions Zend/tests/enum/backed-values-ignore-regular-consts.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
--TEST--
BackedEnum::values() only returns case values, not regular constants
--FILE--
<?php
enum Mixed_: string {
case A = 'a';
case B = 'b';

public const REGULAR_CONST = 'not_a_case';
}
var_dump(Mixed_::values());
?>
--EXPECT--
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}

24 changes: 24 additions & 0 deletions Zend/tests/enum/backed-values-int.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
--TEST--
Backed enums: values() returns ints
--FILE--
<?php

enum Priority: int {
case Low = 1;
case Medium = 5;
case High = 10;
}

var_dump(Priority::values());

?>
--EXPECT--
array(3) {
[0]=>
int(1)
[1]=>
int(5)
[2]=>
int(10)
}

15 changes: 15 additions & 0 deletions Zend/tests/enum/backed-values-not-on-pure.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--TEST--
Unit enums do not have values()
--FILE--
<?php

enum U {
case A;
}

var_dump(method_exists(U::class, 'values'));

?>
--EXPECT--
bool(false)

21 changes: 21 additions & 0 deletions Zend/tests/enum/backed-values-order.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--TEST--
BackedEnum::values() preserves declaration order
--FILE--
<?php
enum Order: int {
case Third = 3;
case First = 1;
case Second = 2;
}
var_dump(Order::values());
?>
--EXPECT--
array(3) {
[0]=>
int(3)
[1]=>
int(1)
[2]=>
int(2)
}

24 changes: 24 additions & 0 deletions Zend/tests/enum/backed-values-string.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
--TEST--
Backed enums: values() returns strings
--FILE--
<?php

enum Color: string {
case Red = 'red';
case Green = 'green';
case Blue = 'blue';
}

var_dump(Color::values());

?>
--EXPECT--
array(3) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
[2]=>
string(4) "blue"
}