3 enum Foo
: int as int {
10 enum Bar
: string as string {
20 function __toString(): string {
25 function getFooValues(): array<string, Foo
> {
26 return Foo
::getValues();
28 function getFooValues2(): array<string, int> {
29 return Foo
::getValues();
32 echo "Some basic tests on Foo\n";
33 var_dump(getFooValues());
34 var_dump(Foo
::getNames());
35 var_dump(Foo
::isValid(Foo
::FOO
));
36 var_dump(Foo
::isValid(12));
37 var_dump(Foo
::isValid(null));
39 echo "getValues/getNames tests on Bar\n";
40 var_dump(Bar
::getValues());
41 var_dump(Bar
::getNames());
43 echo "getValues/getNames tests on Baz\n";
44 var_dump(Baz
::getValues());
45 var_dump(Baz
::getNames());
47 echo "coerce() on Foo\n";
48 var_dump(Foo
::coerce(Foo
::FOO
));
49 var_dump(Foo
::coerce(2));
50 var_dump(Foo
::coerce('3'));
51 var_dump(Foo
::coerce(100));
53 // 0 should give 0, other falsey things are null
54 echo "falsey coerce() on Foo\n";
55 var_dump(Foo
::coerce(0));
56 var_dump(Foo
::coerce(null));
57 var_dump(Foo
::coerce(false));
58 var_dump(Foo
::coerce(''));
60 echo "coerce() on Bar\n";
61 var_dump(Bar
::coerce(Bar
::BAR
));
62 var_dump(Bar
::coerce(10));
63 var_dump(Bar
::coerce(100));
64 var_dump(Bar
::coerce('foo'));
65 var_dump(Bar
::coerce('welp'));
67 echo "Stringish doesn't count\n";
68 var_dump(Bar
::coerce(new Stringy()));
70 echo "some valid assert()s\n";
71 var_dump(Foo
::assert(Foo
::FOO
));
72 var_dump(Foo
::assert('1'));
73 var_dump(Bar
::assert(10));
74 var_dump(Bar
::assert('foo'));
76 echo "a broken assert()\n";
77 var_dump(Bar
::assert('welp'));