Handle this typehints
[hiphop-php.git] / hphp / test / quick / fc_enum_7.php
blob97a93aa456946549e5f2d786ffad8931dff9e10f
1 <?hh
3 enum Foo : int as int {
4 WAT = 0;
5 FOO = 1;
6 BAR = 2;
7 BAZ = 3;
10 enum Bar : string as string {
11 FOO = 'foo';
12 BAR = 'bar';
13 BAZ = '10';
16 enum Baz : int {
19 class Stringy {
20 function __toString(): string {
21 return 'foo';
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'));