xref: /PHP-8.2/Zend/tests/enum/internal_enums.phpt (revision 9b984f52)
1--TEST--
2Internal enums
3--EXTENSIONS--
4zend_test
5--FILE--
6<?php
7
8var_dump($bar = ZendTestUnitEnum::Bar);
9var_dump($bar === ZendTestUnitEnum::Bar);
10var_dump($bar instanceof UnitEnum);
11
12var_dump($foo = zend_get_unit_enum());
13var_dump($foo === ZendTestUnitEnum::Foo);
14
15var_dump(ZendTestUnitEnum::cases());
16echo "\n";
17
18var_dump($foo = ZendTestStringEnum::Foo);
19var_dump($foo instanceof BackedEnum);
20var_dump(ZendTestStringEnum::Foo->value);
21var_dump($bar = ZendTestStringEnum::from("Test2"));
22var_dump($bar === ZendTestStringEnum::Bar);
23var_dump(ZendTestStringEnum::tryFrom("Test3"));
24var_dump(ZendTestStringEnum::tryFrom(42));
25var_dump(ZendTestStringEnum::tryFrom(43));
26var_dump(ZendTestStringEnum::tryFrom(0));
27var_dump(ZendTestStringEnum::cases());
28
29var_dump($s = serialize($foo));
30var_dump(unserialize($s));
31var_dump(unserialize($s) === $foo);
32
33function test_int_enum(int|string $case) {
34    try {
35        var_dump(ZendTestIntEnum::from($case));
36    } catch (\Error $e) {
37        echo get_class($e) . ': ' . $e->getMessage() . "\n";
38    }
39    var_dump(ZendTestIntEnum::tryFrom($case));
40}
41
42test_int_enum(1);
43test_int_enum('1');
44test_int_enum(2);
45test_int_enum('2');
46test_int_enum(-1);
47test_int_enum('-1');
48
49?>
50--EXPECT--
51enum(ZendTestUnitEnum::Bar)
52bool(true)
53bool(true)
54enum(ZendTestUnitEnum::Foo)
55bool(true)
56array(2) {
57  [0]=>
58  enum(ZendTestUnitEnum::Foo)
59  [1]=>
60  enum(ZendTestUnitEnum::Bar)
61}
62
63enum(ZendTestStringEnum::Foo)
64bool(true)
65string(5) "Test1"
66enum(ZendTestStringEnum::Bar)
67bool(true)
68NULL
69enum(ZendTestStringEnum::FortyTwo)
70NULL
71NULL
72array(4) {
73  [0]=>
74  enum(ZendTestStringEnum::Foo)
75  [1]=>
76  enum(ZendTestStringEnum::Bar)
77  [2]=>
78  enum(ZendTestStringEnum::Baz)
79  [3]=>
80  enum(ZendTestStringEnum::FortyTwo)
81}
82string(30) "E:22:"ZendTestStringEnum:Foo";"
83enum(ZendTestStringEnum::Foo)
84bool(true)
85enum(ZendTestIntEnum::Foo)
86enum(ZendTestIntEnum::Foo)
87enum(ZendTestIntEnum::Foo)
88enum(ZendTestIntEnum::Foo)
89ValueError: 2 is not a valid backing value for enum ZendTestIntEnum
90NULL
91ValueError: 2 is not a valid backing value for enum ZendTestIntEnum
92NULL
93enum(ZendTestIntEnum::Baz)
94enum(ZendTestIntEnum::Baz)
95enum(ZendTestIntEnum::Baz)
96enum(ZendTestIntEnum::Baz)
97