Skip to content

Commit 50f947b

Browse files
Crelliluuu1994
authored andcommitted
Improve tests
1 parent c6b4943 commit 50f947b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+312
-33
lines changed

Zend/tests/enum/013.phpt

Lines changed: 0 additions & 12 deletions
This file was deleted.

Zend/tests/enum/021.phpt

Lines changed: 0 additions & 20 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Zend/tests/enum/constant-aliases.phpt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
--TEST--
2+
Enum constants can alias cases
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Foo {
11+
case Bar;
12+
const Other = self::Bar;
13+
const Again = static::Bar;
14+
}
15+
16+
function test(Foo $var) {
17+
print "works";
18+
}
19+
20+
test(Foo:Other);
21+
test(Foo:Again);
22+
23+
?>
24+
--EXPECTF--
25+
works
26+
works

Zend/tests/enum/constants.phpt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--TEST--
2+
Enum allows constants
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Foo {
11+
const BAR = 'Bar';
12+
}
13+
14+
print Foo::BAR;
15+
16+
?>
17+
--EXPECTF--
18+
Bar
File renamed without changes.

Zend/tests/enum/enum-as-constant.phpt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
--TEST--
2+
Enum cases can be referenced by constants
3+
--FILE--
4+
<?php
5+
6+
enum Foo {
7+
case Bar;
8+
}
9+
10+
const Beep = Foo::Bar;
11+
12+
class Test {
13+
const Beep = Foo::Bar;
14+
}
15+
16+
var_dump(Beep);
17+
var_dump(Test::Beep);
18+
19+
?>
20+
--EXPECTF--
21+
enum(Foo::Bar)
22+
enum(Foo::Bar)

Zend/tests/enum/003.phpt renamed to Zend/tests/enum/enum-as-params.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--TEST--
2-
Enum type hints
2+
Enum types as parameters
33
--FILE--
44
<?php
55

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Zend/tests/enum/is_enum.phpt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
--TEST--
2+
is_enum
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Foo {
11+
case Bar;
12+
}
13+
14+
class Baz {}
15+
16+
$enum_var = Foo::Bar;
17+
$not_enum_var = 'narf';
18+
19+
// I'm not sure this one is correct?
20+
var_dump(is_enum(Foo::class));
21+
22+
var_dump(is_enum(Foo::Bar::class));
23+
var_dump(is_enum(Baz::class));
24+
25+
var_dump(is_enum('beep'));
26+
var_dump(is_enum($enum_var));
27+
var_dump(is_enum($not_enum_var));
28+
29+
?>
30+
--EXPECT--
31+
bool(true)
32+
bool(true)
33+
bool(false)
34+
bool(false)
35+
bool(true)
36+
bool(false)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Zend/tests/enum/scalar-cases.phpt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
--TEST--
2+
Scalar enums can list cases
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Suit: string {
11+
case Hearts = 'H';
12+
case Diamonds = 'D';
13+
case Clubs = 'C';
14+
case Spades = 'S';
15+
}
16+
17+
var_dump(Suit::cases());
18+
19+
?>
20+
--EXPECTF--
21+
array(4) {
22+
["H"]=>
23+
enum(Suit::Hearts)
24+
["D"]=>
25+
enum(Suit::Diamonds)
26+
["C"]=>
27+
enum(Suit::Clubs)
28+
["S"]=>
29+
enum(Suit::Spades)
30+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--TEST--
2+
Scalar enums reject upcasting from invalid input
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Suit: string {
11+
case Hearts = 'H';
12+
case Diamonds = 'D';
13+
case Clubs = 'C';
14+
case Spades = 'S';
15+
}
16+
17+
var_dump(Suit::from('A'));
18+
19+
?>
20+
--EXPECTF--
21+
Fatal Error: 'A' is not a valid scalar value for 'Suit' enumeration in %s on line %d

Zend/tests/enum/scalar-from.phpt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
--TEST--
2+
Scalar enums can be upcast from a scalar
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Suit: string {
11+
case Hearts = 'H';
12+
case Diamonds = 'D';
13+
case Clubs = 'C';
14+
case Spades = 'S';
15+
}
16+
17+
var_dump(Suit::from('H'));
18+
var_dump(Suit::from('D'));
19+
var_dump(Suit::from('C'));
20+
var_dump(Suit::from('S'));
21+
22+
enum Foo: int {
23+
case Bar = 1;
24+
case Baz = 2;
25+
case Beep = 3;
26+
}
27+
28+
var_dump(Foo::from(1));
29+
var_dump(Foo::from(2));
30+
var_dump(Foo::from(3));
31+
32+
?>
33+
--EXPECTF--
34+
enum(Suit::Hearts)
35+
enum(Suit::Diamonds)
36+
enum(Suit::Clubs)
37+
enum(Suit::Spades)
38+
enum(Foo::Bar)
39+
enum(Foo::Baz)
40+
enum(Foo::Beep)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Zend/tests/enum/static-methods.phpt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
--TEST--
2+
Enum supports static methods
3+
--FILE--
4+
<?php
5+
6+
enum Size {
7+
case Small;
8+
case Medium;
9+
case Large;
10+
11+
public static function fromLength(int $cm) {
12+
return match(true) {
13+
$cm < 50 => static::Small,
14+
$cm < 100 => static::Medium,
15+
default => static::Large,
16+
};
17+
}
18+
}
19+
20+
var_dump(Size::fromLength(23));
21+
var_dump(Size::fromLength(63));
22+
var_dump(Size::fromLength(123));
23+
24+
?>
25+
--EXPECTF--
26+
enum(Size::Small)
27+
enum(Size::Medium)
28+
enum(Size::Large)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
Enum cannot have properties, even via traits
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
trait Rectangle {
11+
protected string $shape = "Rectangle";
12+
13+
public function shape(): string {
14+
return $this->shape;
15+
}
16+
}
17+
18+
enum Suit {
19+
use Rectangle;
20+
21+
case Hearts;
22+
case Diamonds;
23+
case Clubs;
24+
case Spades;
25+
}
26+
27+
?>
28+
--EXPECTF--
29+
Fatal error: Traits used in enumerations may not contain properties.

Zend/tests/enum/traits.phpt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
--TEST--
2+
Enum can use traits
3+
--FILE--
4+
<?php
5+
6+
trait Rectangle {
7+
public function shape(): string {
8+
return "Rectangle";
9+
}
10+
}
11+
12+
enum Suit {
13+
use Rectangle;
14+
15+
case Hearts;
16+
case Diamonds;
17+
case Clubs;
18+
case Spades;
19+
}
20+
21+
print Suit::Hearts->shape() . PHP_EOL;
22+
print Suit::Diamonds->shape() . PHP_EOL;
23+
print Suit::Clubs->shape() . PHP_EOL;
24+
print Suit::Spades->shape() . PHP_EOL;
25+
26+
?>
27+
--EXPECTF--
28+
Rectangle
29+
Rectangle
30+
Rectangle
31+
Rectangle

Zend/tests/enum/unit-cases.phpt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
--TEST--
2+
Unit enums can list cases
3+
--SKIPIF--
4+
<?php
5+
die("skip, not yet implemented");
6+
?>
7+
--FILE--
8+
<?php
9+
10+
enum Suit {
11+
case Hearts;
12+
case Diamonds;
13+
case Clubs;
14+
case Spades;
15+
}
16+
17+
var_dump(Suit::cases());
18+
19+
?>
20+
--EXPECTF--
21+
array(4) {
22+
[0]=>
23+
enum(Suit::Hearts)
24+
[1]=>
25+
enum(Suit::Diamonds)
26+
[2]=>
27+
enum(Suit::Clubs)
28+
[3]=>
29+
enum(Suit::Spades)
30+
}
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)