diff --git a/Zend/tests/enum/013.phpt b/Zend/tests/enum/013.phpt deleted file mode 100644 index bf0178f54f2c6..0000000000000 --- a/Zend/tests/enum/013.phpt +++ /dev/null @@ -1,12 +0,0 @@ ---TEST-- -Enum disallows constants ---FILE-- - ---EXPECTF-- -Fatal error: Enums cannot have constants in %s on line %d diff --git a/Zend/tests/enum/021.phpt b/Zend/tests/enum/021.phpt deleted file mode 100644 index 65ff78e6d30b6..0000000000000 --- a/Zend/tests/enum/021.phpt +++ /dev/null @@ -1,20 +0,0 @@ ---TEST-- -is_enum ---FILE-- - ---EXPECT-- -bool(true) -bool(true) -bool(false) diff --git a/Zend/tests/enum/034.phpt b/Zend/tests/enum/__call.phpt similarity index 100% rename from Zend/tests/enum/034.phpt rename to Zend/tests/enum/__call.phpt diff --git a/Zend/tests/enum/033.phpt b/Zend/tests/enum/__get.phpt similarity index 100% rename from Zend/tests/enum/033.phpt rename to Zend/tests/enum/__get.phpt diff --git a/Zend/tests/enum/035.phpt b/Zend/tests/enum/__invoke.phpt similarity index 100% rename from Zend/tests/enum/035.phpt rename to Zend/tests/enum/__invoke.phpt diff --git a/Zend/tests/enum/002.phpt b/Zend/tests/enum/basic-methods.phpt similarity index 100% rename from Zend/tests/enum/002.phpt rename to Zend/tests/enum/basic-methods.phpt diff --git a/Zend/tests/enum/001.phpt b/Zend/tests/enum/comparison.phpt similarity index 100% rename from Zend/tests/enum/001.phpt rename to Zend/tests/enum/comparison.phpt diff --git a/Zend/tests/enum/constant-aliases.phpt b/Zend/tests/enum/constant-aliases.phpt new file mode 100644 index 0000000000000..9a08d37a677ab --- /dev/null +++ b/Zend/tests/enum/constant-aliases.phpt @@ -0,0 +1,26 @@ +--TEST-- +Enum constants can alias cases +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +works +works diff --git a/Zend/tests/enum/constants.phpt b/Zend/tests/enum/constants.phpt new file mode 100644 index 0000000000000..f9da4fb1869cf --- /dev/null +++ b/Zend/tests/enum/constants.phpt @@ -0,0 +1,18 @@ +--TEST-- +Enum allows constants +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Bar diff --git a/Zend/tests/enum/022.phpt b/Zend/tests/enum/default-parameter.phpt similarity index 100% rename from Zend/tests/enum/022.phpt rename to Zend/tests/enum/default-parameter.phpt diff --git a/Zend/tests/enum/enum-as-constant.phpt b/Zend/tests/enum/enum-as-constant.phpt new file mode 100644 index 0000000000000..280f2b3926213 --- /dev/null +++ b/Zend/tests/enum/enum-as-constant.phpt @@ -0,0 +1,22 @@ +--TEST-- +Enum cases can be referenced by constants +--FILE-- + +--EXPECTF-- +enum(Foo::Bar) +enum(Foo::Bar) diff --git a/Zend/tests/enum/003.phpt b/Zend/tests/enum/enum-as-params.phpt similarity index 95% rename from Zend/tests/enum/003.phpt rename to Zend/tests/enum/enum-as-params.phpt index 81f511f62faa6..90a1f0b5d07f6 100644 --- a/Zend/tests/enum/003.phpt +++ b/Zend/tests/enum/enum-as-params.phpt @@ -1,5 +1,5 @@ --TEST-- -Enum type hints +Enum types as parameters --FILE-- +--FILE-- + +--EXPECT-- +bool(true) +bool(true) +bool(false) +bool(false) +bool(true) +bool(false) diff --git a/Zend/tests/enum/016.phpt b/Zend/tests/enum/no-constructors.phpt similarity index 100% rename from Zend/tests/enum/016.phpt rename to Zend/tests/enum/no-constructors.phpt diff --git a/Zend/tests/enum/012.phpt b/Zend/tests/enum/no-dynamic-properties.phpt similarity index 100% rename from Zend/tests/enum/012.phpt rename to Zend/tests/enum/no-dynamic-properties.phpt diff --git a/Zend/tests/enum/011.phpt b/Zend/tests/enum/no-instantiate.phpt similarity index 100% rename from Zend/tests/enum/011.phpt rename to Zend/tests/enum/no-instantiate.phpt diff --git a/Zend/tests/enum/009.phpt b/Zend/tests/enum/no-properties.phpt similarity index 100% rename from Zend/tests/enum/009.phpt rename to Zend/tests/enum/no-properties.phpt diff --git a/Zend/tests/enum/018.phpt b/Zend/tests/enum/no-static-properties.phpt similarity index 100% rename from Zend/tests/enum/018.phpt rename to Zend/tests/enum/no-static-properties.phpt diff --git a/Zend/tests/enum/015.phpt b/Zend/tests/enum/reflectionclass.phpt similarity index 100% rename from Zend/tests/enum/015.phpt rename to Zend/tests/enum/reflectionclass.phpt diff --git a/Zend/tests/enum/scalar-cases.phpt b/Zend/tests/enum/scalar-cases.phpt new file mode 100644 index 0000000000000..e80f31c6a358e --- /dev/null +++ b/Zend/tests/enum/scalar-cases.phpt @@ -0,0 +1,30 @@ +--TEST-- +Scalar enums can list cases +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(4) { + ["H"]=> + enum(Suit::Hearts) + ["D"]=> + enum(Suit::Diamonds) + ["C"]=> + enum(Suit::Clubs) + ["S"]=> + enum(Suit::Spades) +} diff --git a/Zend/tests/enum/scalar-from-invalid.phpt b/Zend/tests/enum/scalar-from-invalid.phpt new file mode 100644 index 0000000000000..4238663b7e147 --- /dev/null +++ b/Zend/tests/enum/scalar-from-invalid.phpt @@ -0,0 +1,21 @@ +--TEST-- +Scalar enums reject upcasting from invalid input +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Fatal Error: 'A' is not a valid scalar value for 'Suit' enumeration in %s on line %d diff --git a/Zend/tests/enum/scalar-from.phpt b/Zend/tests/enum/scalar-from.phpt new file mode 100644 index 0000000000000..7c36fdb6e2290 --- /dev/null +++ b/Zend/tests/enum/scalar-from.phpt @@ -0,0 +1,40 @@ +--TEST-- +Scalar enums can be upcast from a scalar +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +enum(Suit::Hearts) +enum(Suit::Diamonds) +enum(Suit::Clubs) +enum(Suit::Spades) +enum(Foo::Bar) +enum(Foo::Baz) +enum(Foo::Beep) diff --git a/Zend/tests/enum/027.phpt b/Zend/tests/enum/scalar-int.phpt similarity index 100% rename from Zend/tests/enum/027.phpt rename to Zend/tests/enum/scalar-int.phpt diff --git a/Zend/tests/enum/029.phpt b/Zend/tests/enum/scalar-invalid.phpt similarity index 100% rename from Zend/tests/enum/029.phpt rename to Zend/tests/enum/scalar-invalid.phpt diff --git a/Zend/tests/enum/030.phpt b/Zend/tests/enum/scalar-mismatch.phpt similarity index 100% rename from Zend/tests/enum/030.phpt rename to Zend/tests/enum/scalar-mismatch.phpt diff --git a/Zend/tests/enum/028.phpt b/Zend/tests/enum/scalar-string.phpt similarity index 100% rename from Zend/tests/enum/028.phpt rename to Zend/tests/enum/scalar-string.phpt diff --git a/Zend/tests/enum/026.phpt b/Zend/tests/enum/serialization-round-trip.phpt similarity index 100% rename from Zend/tests/enum/026.phpt rename to Zend/tests/enum/serialization-round-trip.phpt diff --git a/Zend/tests/enum/019.phpt b/Zend/tests/enum/serialize.phpt similarity index 100% rename from Zend/tests/enum/019.phpt rename to Zend/tests/enum/serialize.phpt diff --git a/Zend/tests/enum/static-methods.phpt b/Zend/tests/enum/static-methods.phpt new file mode 100644 index 0000000000000..60a950b9291f2 --- /dev/null +++ b/Zend/tests/enum/static-methods.phpt @@ -0,0 +1,28 @@ +--TEST-- +Enum supports static methods +--FILE-- + static::Small, + $cm < 100 => static::Medium, + default => static::Large, + }; + } +} + +var_dump(Size::fromLength(23)); +var_dump(Size::fromLength(63)); +var_dump(Size::fromLength(123)); + +?> +--EXPECTF-- +enum(Size::Small) +enum(Size::Medium) +enum(Size::Large) diff --git a/Zend/tests/enum/traits-no-properties.phpt b/Zend/tests/enum/traits-no-properties.phpt new file mode 100644 index 0000000000000..9762f5873bebe --- /dev/null +++ b/Zend/tests/enum/traits-no-properties.phpt @@ -0,0 +1,29 @@ +--TEST-- +Enum cannot have properties, even via traits +--SKIPIF-- + +--FILE-- +shape; + } +} + +enum Suit { + use Rectangle; + + case Hearts; + case Diamonds; + case Clubs; + case Spades; +} + +?> +--EXPECTF-- +Fatal error: Traits used in enumerations may not contain properties. diff --git a/Zend/tests/enum/traits.phpt b/Zend/tests/enum/traits.phpt new file mode 100644 index 0000000000000..33f4e882294df --- /dev/null +++ b/Zend/tests/enum/traits.phpt @@ -0,0 +1,31 @@ +--TEST-- +Enum can use traits +--FILE-- +shape() . PHP_EOL; +print Suit::Diamonds->shape() . PHP_EOL; +print Suit::Clubs->shape() . PHP_EOL; +print Suit::Spades->shape() . PHP_EOL; + +?> +--EXPECTF-- +Rectangle +Rectangle +Rectangle +Rectangle diff --git a/Zend/tests/enum/unit-cases.phpt b/Zend/tests/enum/unit-cases.phpt new file mode 100644 index 0000000000000..d7666780858fc --- /dev/null +++ b/Zend/tests/enum/unit-cases.phpt @@ -0,0 +1,30 @@ +--TEST-- +Unit enums can list cases +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +array(4) { + [0]=> + enum(Suit::Hearts) + [1]=> + enum(Suit::Diamonds) + [2]=> + enum(Suit::Clubs) + [3]=> + enum(Suit::Spades) +} diff --git a/Zend/tests/enum/025.phpt b/Zend/tests/enum/unserialize.phpt similarity index 100% rename from Zend/tests/enum/025.phpt rename to Zend/tests/enum/unserialize.phpt diff --git a/Zend/tests/enum/024.phpt b/Zend/tests/enum/var_export.phpt similarity index 100% rename from Zend/tests/enum/024.phpt rename to Zend/tests/enum/var_export.phpt